您现在的位置是:首页 > 文章详情

PHP知识笔记:CGI, FastCGI, PHP-CGI, PHP-FPM, Spawn-FCGI区别

日期:2018-09-28点击:330

原作者链接:https://www.aicyun.com/article/34

原理

nginx只是 web 中的内容分发者,比如,如果请求/index.html,那么web server会去文件系统中找到这个文件,发送给浏览器,这里分发的是静态数据。好了,如果现在请求的是/index.php,根据配置文件,nginx知道这个不是静态文件,需要去找PHP解析器来处理,那么他会把这个请求简单处理后交给PHP解析器。即启动对应的CGI程序,PHP解析器会解析php.ini文件,初始化一个环境进程,然后处理请求,在以规定CGI规定的格式返回处理后的结果,退出进程,nginx 在把结果返回给浏览器.

CGI

CGI是公共网关接口(common gateway interface);http 服务器与你的或者其他机器上的程序进行交谈的一种工具,程序需运行在网络服务器上
CGI可以用于任何语言,只有这种语言具有标准的输入,输出和环境变量.
CGI是个协议.

FastCGI

Fastcgi是用来提高CGI程序性能的,CGI程序的性能出在CGI对每个请求都会执行解析php.ini初始化执行环境这些步骤,每次请求都启动一个进程,假如有几千万请求那就完了.
Fastcgi会先启动一个master,专门解析配置,初始化环境,在启动多个worker进程,请求来了,master会传递给一个worker,然后继续等待下一个请求,这就避免了重复的解析和初始化,效率提升不少.假如worker进程不够,master主进程会多启动几个 worker,如果空闲了,master 会主动停止一些 worker.这节省了大量的资源

PHP-CGI

PHP-CGI是PHP自带的FastCGI管理器
弊端:

  • php-cgi假如改了配置文件需要重启php-cgi,不能做到平滑重启
  • 直接杀死php-cgi进程,php 就不能运行了

PHP-FPM

PHP-FPM是一个PHP FastCGI管理器,准确的说是管理的 php-cgi,fastcgi是一种协议,和进程无关.php-fpm在修改php.ini后不像php-cgi不能平滑重启.php-fpm会让新的worker用新的配置,已经存在的 worker 处理完了就停止了.

php-cgi只是解释PHP脚本的程序而已

Spawn-FCGI

通用的FastCGI管理服务器,lighttpd的一部分.最新的lighttpd也没有包含这一块,不建议使用.

原文链接:https://yq.aliyun.com/articles/646561
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章