WordPress 主流程 + Nginx & PHP-FPM 通信机制
浏览器访问 URL(如 /hello-world/)
│
▼
Nginx(Web 服务器)
│
└─ 使用 FastCGI 协议,通过 Socket 将请求发送至 ↓
▼
PHP-FPM(PHP 进程管理器)
│
└─ 启动 PHP 进程,执行 WordPress ↓
▼
WordPress 执行主流程
│
└─ index.php(入口)
↓
wp-blog-header.php
├── wp-load.php
│ ├── wp-config.php(加载配置)
│ └── wp-settings.php(初始化插件和主题等)
│
└── wp() 执行主逻辑
↓
$wp->main()
├── parse_request()(解析 URL)
├── query_posts()(创建 WP_Query)
├── handle_404()(判断 404)
└── template-loader.php
├── get_*_template()(查找模板文件)
├── include($template)(加载 PHP 模板)
└── the_content()(渲染内容)
│
▼
生成最终 HTML 内容
│
▼
PHP-FPM 返回 HTML 给 Nginx
│
▼
Nginx 将 HTML 响应发送给浏览器
│
▼
浏览器解析并呈现页面
WordPress 和 Node.js 运行模型的根本不同
| 特性 | WordPress | Node.js |
|---|---|---|
| 执行方式 | 每次请求执行一次脚本,处理完即销毁 | 常驻内存的单进程服务,处理多个请求 |
| 生命周期 | 短暂:每个请求一个独立进程/线程 | 持久:一个 Node.js 应用可长时间运行 |
| 状态管理 | 每次重新初始化(无状态) | 内存可持久保留变量、状态、连接 |
| 并发方式 | 多进程或线程由 Web 服务器(如 PHP-FPM)控制 | 事件驱动 + 异步非阻塞(单线程 + 事件循环) |
什么是 PHP-FPM?
PHP-FPM(FastCGI Process Manager)是 PHP 的 FastCGI 实现,是一个独立运行的后台服务程序(daemon)。
它的作用是高效管理多个 PHP 进程,为 Web 服务器(如 Nginx)提供请求处理能力。
- 运行方式:以服务进程形式存在,接收来自 Nginx 的请求
- 通信协议:使用 FastCGI 协议
- 来源:已经成为 PHP 官方的一部分,由全球社区维护
FastCGI 协议简介
FastCGI 是一种高性能、跨平台的 Web 服务器与应用程序之间的通信协议。其核心优势在于:
- 将应用服务器(如 PHP)与 Web 服务器(如 Nginx)解耦
- 支持复用进程,避免频繁创建/销毁,提高性能
- 支持分布式部署
Nginx 与 PHP-FPM 的通信机制
Nginx 与 PHP-FPM 之间通过 Socket 通信(可以是 Unix Socket 或 TCP Socket)传递请求数据和响应。
为何使用 Socket 通信?
- 跨主机部署(Nginx 和 PHP-FPM 可在不同机器)
- 操作系统级别的进程间通信,性能高、稳定性好
- 可配置并发连接数、进程池等优化策略