cgi、fast-cgi、php-fpm的关系

首先我们来讲CGI

  • cgi是一个协议,跟进程无关,比如说 web server(nginx)接收到一个php的网络请求,此时nginx需要根据配置文件,去找php的解析器,经过简单处理,将请求的一些信息交给php解析器,此时就规定了要传那些协议,还有以什么样的格式传输,这个标准就叫做cgi协议
  • php解释是实现了这个协议的cgi程序,nginx将这些内容交给php解释器后,读取php.ini等初始化环境,然后处理数据,最终转换成符合这个协议的数据流交给nginx,最终返回给浏览器

fast-cgi 管理cgi程序

  • fast-cgi 是一个常驻进程的程序,与cgi为每个web请求建立一个进程不同的是,fast-cgi在web server 启动的时候会同时启动多个cgi程序,这样当进来动态页面请求的时候,就可以将数据流交由fast-cgi进程管理器,这样做的好处就是web server可以处理更多的请求,并且解析php.ini这些工作只进行一次,提高响应速度,
  • 图示如下
    cgi、fast-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时就能解决这些问题
  • 此时的流程图如下
    cgi、fast-cgi、php-fpm的关系
本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!