介绍
要了解PHP-FPM要先了解CGI与FastCGI的关系。PHP-FPM(PHP进程管理器)作为Nginx与PHPServer之间的桥梁,Nginx接收到请求后转发FastCGI,FastCGI来控制worker进程进行业务的处理。
CGI通用网关接口,是Web服务器调用外部程序时所使用的一种应用规范
FastCGI就是CGI的升级版,大大降低了CGI的资源浪费问题
FastCGI和CGI的区别
CGI:HTTP请求进来以后,每次都创建新的进程,解析配置、初始化执行环境再执行请求,大量浪费资源
FastCGI:先fock一个master进程负责接收HTTP请求,避免浪费资源每次请求都根据master进程fock一个worker进程进行业务处理,这样就大大降低了资源浪费。当worker进程不够用时master进程可以根据配置预先启动几个worker进程等待请求,相反当worker进程空闲太多时也会关闭一些进程。
工作原理
PHP-FPM 负责管理一个进程池来处理来自 Web 服务器的 HTTP 动态请求,在 PHP-FPM 中,master 进程负责与 Web 服务器进行通信,接收 HTTP 请求,再将请求转发给 worker 进程进行处理,worker 进程主要负责动态执行 PHP 代码,处理完成后,将处理结果返回给 Web 服务器,再由 Web 服务器将结果发送给客户端。这就是 PHP-FPM 的基本工作原理,