PHP8.1.21版本已发布
vue8.1.21版本已发布
jquery8.1.21版本已发布

cgi、fast-cgi、php-fpm的关系(附流程图)

藏色散人
藏色散人 转载
2022-10-08 14:07:11 3040浏览

首先我们来讲 CGI

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

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

fast-cgi 管理 cgi 程序

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

图示如下

d3fba5bad1a90f812542a425ecbfb08.jpg

php-fpm 管理 cgi 程序

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

此时的流程图如下

d53434c7264b2da0098074b2cc636be.jpg

声明:本文转载于:learnku,如有侵犯,请联系admin@php.cn删除