PHP面试题更新 2026-08-05

请描述 PHP-FPM 从启动到处理一个 HTTP 请求的整个流程,包括它如何管理 worker 进程以及请求的分配与响应机制。

技术原理PHPPHP-FPM

考察说明

考查对 PHP-FPM 进程模型和请求处理机制的理解程度。

回答思路

  1. 【回答框架 1】PHP-FPM 是一个 FastCGI 进程管理器,用于管理 PHP-CGI 进程。它启动时会读取配置文件(如 php-fpm.conf 和 pool 配置),创建 master 进程和多个 worker 进程。master 进程负责监听 Socket(如 TCP 端口或 Unix Socket),并统一管理 worker 进程的生命周期。
  2. 【回答框架 2】当一个 HTTP 请求到达 Web 服务器(如 Nginx)时,Web 服务器根据配置将请求通过 FastCGI 协议转发给 PHP-FPM 监听的地址。PHP-FPM 的 master 进程收到新请求后,会从空闲的 worker 进程中选择一个,并将请求交给该 worker 处理。
  3. 【回答框架 3】worker 进程执行 PHP 脚本,进行解析、执行、数据库操作等,最终生成响应内容,并通过 FastCGI 协议返回给 Web 服务器,再由 Web 服务器发送给客户端。worker 在处理完请求后回到空闲状态,等待下一个请求。
  4. 【回答框架 4】PHP-FPM 支持多种进程管理模式(如 static、dynamic、ondemand),可以灵活调整 worker 进程的数量。动态模式下,master 进程会根据配置的 min/max 空闲进程数以及请求负载,自动创建或销毁 worker 进程,以平衡资源使用和响应速度。
  5. 【关键点 1】PHP-FPM 采用 master-worker 进程模型,master 负责监听和管理,worker 负责执行 PHP。
  6. 【关键点 2】请求通过 FastCGI 协议转发,worker 处理完返回响应。
  7. 【关键点 3】支持 static、dynamic、ondemand 等进程管理模式,可根据负载动态调整 worker 数量。
  8. 【易错点 1】不要混淆 PHP-FPM 与 PHP-CGI,PHP-FPM 是进程管理器,PHP-CGI 是单独的 CGI 实现。
  9. 【易错点 2】不要误以为每个请求都会创建一个新进程,PHP-FPM 复用 worker 进程以提高效率。