1. 云栖社区>
  2. PHP教程>
  3. 正文

cgi ,fastcgi,PHP-FPM和php-cgi

作者:用户 来源:互联网 时间:2017-11-30 11:17:32

phpcgifastcgifpm

cgi ,fastcgi,PHP-FPM和php-cgi - 摘要: 本文讲的是cgi ,fastcgi,PHP-FPM和php-cgi, cgi ------协议接口 每个进到服务器的请求,cgi接口会对进行解析,比如一个PHP文件请求来了,cgi会知道这个是PHP文件,需要PHP进行运行,所以就启动PHP解析器解析php.ini文件和初始化PHP环境。当请求结束后,又

  1. cgi ------协议接口
    每个进到服务器的请求,cgi接口会对进行解析,比如一个PHP文件请求来了,cgi会知道这个是PHP文件,需要PHP进行运行,所以就启动PHP解析器解析php.ini文件和初始化PHP环境。当请求结束后,又会关闭PHP,当第二次有关PHP请求到来的时候重复上面的动作。所以cgi协议接口是低效的。

  2. fastcgi----协议接口;
    为了避免cgi接口的这些问题,有人写出了fastcgi接口。fastcgi接口不会想cgi接口那样每次接到请求都重新启动PHP,解析php.ini文件初始化环境等操作。fastcgi是一个cgi进程管理者,fastcig先启动一个master,他会解析php.ini文件,初始化php执行环境。然后在启动多个work,每次有关于php的请求进来的时候,master都会把请求分发给一个work,然后接受下一个请求。如果请求很多,work不够用,master还会根据配置在开几个work使用。当闲置的work太多的时候,fastcgi还会根据配置关闭若干work。这样fastcgi的效率就显著高于cgi接口。这里的work可以看成进程,fastcgi其实就是一个管理进程池的接口。

  3. PHP-FPM---程序;
    php-fpm是用来管理fastcgi,负责调度php-cgi进程。

  4. php-cgi----解释器;
    php-cgi只是一个cgi程序,只负责解析请求;

总的来说,fastcgi是一种cgi的升级版本,负责更快更高效的调度进程;服务器启动的时候会调用php-fpm,然后php-fpm会启用fastcgi接口,解析php.ini文件,初始化执行环境,创建一个master和多个work。当服务器(eg:nginx)接收到localhost/index.php请求,会把关于php请求发送给php-fpm,master拿到请求之后,会把求情分配给一个work进行解析,然后等待接受下一个请求。

以上是云栖社区小编为您精心准备的的内容,在云栖社区的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索php , cgi , fastcgi fpm ,以便于您获取更多的相关知识。