FPM 是一个 PHP 进程管理器,包含 master 进程和 worker 进程两种进程:
master 进程只有一个,负责监听端口,接收来自 Web Server 的请求,
而 worker 进程则一般有多个 (具体数量根据实际需要配置),每个进程内部都嵌入了一个 PHP 解释器,是 PHP 代码真正执行的地方,
下图是我本机上 fpm 的进程情况,
1一个 master 进程,3个 worker 进程:
从 FPM 接收到请求,到处理完毕,其具体的流程如下:
-
FPM 的 master 进程接收到请求
-
master 进程根据配置指派特定的 worker 进程进行请求处理,如果没有可用进程,返回错误,这也是我们配合 Nginx 遇到502错误比较多的原因。
-
worker 进程处理请求,如果超时,返回504错误
-
请求处理结束,返回结果