PHP7 PHP-FPM 工作流程

概念

FastCGI 是一种协议(CGI 协议的进阶版本,提高了性能) ,CGI是为了保证 web server 传递过来的数据是标准格式的。

PHP-FPM(PHP-FastCGI Process Manager) 是实现 FastCGI 协议的接口程序,FPM是一个进程管理器,每一个 FPM 管理 一个 FastCGI 进程。PHP-FPM 用于替换PHP FastCGI的大部分附加功能,适用于高负载网站。

特点:

  1. 平滑停止/启动的高级进程管理功能
  2. 慢日志记录脚本
  3. 动态/静态子进程产生,当 worker 不够用時,master 會在建立 worker,而當 worker 闲置太多時,master 也會減少 worker
  4. 基于php.ini的配置文件,一次性载入配置提高性能
  5. 支持单独部署

启动流程

  1. 先产生一个 master 进程
  2. 解析 php.ini 来初使化环境
  3. 创建进程池 pool
  4. 然后预先建立多个 worker 进程,每一个worker 进程绑定一个 php-CGI 解析器

PHP-FPM 启动一个master主进程,主进程产生多个pool进程池,每一个进程池创建多个worker子进程。其中每个进程池监听一个socket套接字。

  1. 用户发起 Web 请求
  2. Nginx 通过 FastCGI 协议调用 PHP-FPM 主进程
  3. 进程池监听socket,启动worker进程
  4. worker 进程调用 php-CGI 处理完成后返回

发表评论