概念
FastCGI 是一种协议(CGI 协议的进阶版本,提高了性能) ,CGI是为了保证 web server 传递过来的数据是标准格式的。
PHP-FPM(PHP-FastCGI Process Manager) 是实现 FastCGI 协议的接口程序,FPM是一个进程管理器,每一个 FPM 管理 一个 FastCGI 进程。PHP-FPM 用于替换PHP FastCGI的大部分附加功能,适用于高负载网站。
特点:
- 平滑停止/启动的高级进程管理功能
- 慢日志记录脚本
- 动态/静态子进程产生,当 worker 不够用時,master 會在建立 worker,而當 worker 闲置太多時,master 也會減少 worker
- 基于php.ini的配置文件,一次性载入配置提高性能
- 支持单独部署
启动流程
- 先产生一个 master 进程
- 解析 php.ini 来初使化环境
- 创建进程池 pool
- 然后预先建立多个 worker 进程,每一个worker 进程绑定一个 php-CGI 解析器
PHP-FPM 启动一个master主进程,主进程产生多个pool进程池,每一个进程池创建多个worker子进程。其中每个进程池监听一个socket套接字。
- 用户发起 Web 请求
- Nginx 通过 FastCGI 协议调用 PHP-FPM 主进程
- 进程池监听socket,启动worker进程
- worker 进程调用 php-CGI 处理完成后返回