ThinkPHP 5.1 程序在 Nginx 和 Apache 下的性能对比

发布: (2026年1月8日 GMT+8 10:08)
3 min read
原文: Dev.to

Source: Dev.to

核心结论(针对 TP5.1)

  • 高并发场景下:Nginx 的请求处理能力(RPS)可能是 Apache(prefork 模式)的 1.5 倍到 3 倍,甚至更高。

原理分析:为什么 Nginx 更适合 TP/PHP 程序?

架构与 PHP 处理方式(最关键区别)

特性Nginx + PHP‑FPMApache (prefork) + mod_php
进程模型Nginx 工作进程轻量,仅负责转发请求;PHP‑FPM 进程独立管理,数量可控每个 Apache 进程同时包含 PHP 解释器,资源占用大
静态文件处理原生 C 代码高效处理(CSS、JS、图片),速度极快通过模块处理,性能相对较低
并发连接单个 Nginx 工作进程可轻松处理上千并发连接每个进程只能处理有限连接,导致并发受限

这对 TP5.1 意味着什么?

内存消耗

  • Nginx + PHP‑FPM

    • Nginx 进程非常轻量。
    • PHP‑FPM 进程虽然占用内存,但可以通过 pm.max_children 等参数控制数量。
    • 一个 TP5.1 应用的 PHP 进程大约占用 50 MB,10 个进程约 500 MB
  • Apache (prefork) + mod_php

    • 每个 Apache 进程都包含完整的 PHP 环境,内存占用显著更高,导致在高并发下容易耗尽资源。

静态资源

  • Nginx 以原生 C 代码高效处理 /public 目录下的静态文件(CSS、JS、图片),是 TP5.1 静态资源的最佳服务方式。

场景推荐方案

场景推荐方案理由
大流量生产环境使用 Nginx + PHP‑FPM高并发处理能力强,内存占用可控,静态资源响应快
必须使用 ApacheMPMprefork 切换到 event,并使用 PHP‑FPM 替代 mod_php大幅缩小与 Nginx 的性能差距

如果你必须使用 Apache

将 MPM 模式切换为 event 并使用 PHP‑FPM。示例配置(httpd.conf):

LoadModule mpm_event_module modules/mod_mpm_event.so
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so

# 将 PHP 请求转发给 PHP-FPM
ProxyPassMatch "^/(.*\.php)$" "fcgi://127.0.0.1:9000/path/to/your/tp5/public/$1"

优化你的 TP5.1

无论使用哪种 Web 服务器,都 务必开启 OPcache 和路由缓存,这往往带来的性能提升比更换服务器更显著。

php think optimize:route
php think optimize:config

总结

对于 TP5.1 系统,将 Apache 切换到 Nginx 往往能带来质的飞跃,尤其在用户量增长后,服务器更稳定、响应更快,并能支撑更多同时在线用户。


程序员的免费工具网站

Back to Blog

相关文章

阅读更多 »