浅谈php中php-fpm fast-cgi cgi的关系

cgi

cgi是一个协议,跟进程无关,比如说web server (nginx) 接收到一个php的网络请求,此时nginx需要根据配置文件,去找php的解析器,经过简单处理,将请求的一些信息交给php解析器,此时就规定了要传哪些协议,还有以什么样的格式传输,这个标准就叫做cgi协议。

php解释是实现了这个协议的cgi 程序,nginx将这些内容交给php解释器后,读取php.ini等初始化环境,然后处理数据,最终转换成符合这个协议的数据流交给nginx, 最终返回给浏览器。

fast-cgi

fast-cgi管理cgi程序

fast-cgi是一个常驻进程的程序,与cgi为每个web请求建立一个进程不同的是,fast-cgi在web server启动的时候会同时启动多个cgi程序,这样当进来动态页面请求的时候,就可以将数据流交由fast-cgi进程管理器,这样做的好处就是 web server可以处理更多的请求,并且解析php.ini这些工作只进行一次,提高响应速度。

如图所示:

php-fpm fast-cgi cgi

php-fpm

php-fpm管理cgi程序

首先php-fpm是将fast-cgi整合之后加入一些新功能的产物,由于web server提供的fast-cgi程序进行管理php-cgi时有着诸多的缺点,例如修改了php.ini的配置文件,必须要重启web server才能使其生效(php-cgi不能平滑的启动,杀掉php-cgi时,php就不能正常的工作),当使用php-fpm时就能解决这些问题。

如图所示:

PHP

👋 感谢您的观看!

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享