CN:What is PHP-FPM
From PHP-FPM
很不幸,官方网站 php.net 上的 php 在将 FastCGI SAPI 用于生产环境方面有许多已知的问题。
下面是关于启用 FastCGI SAPI 时的问题和 php-fpm 是如何解决他们的对比列表。
| 描述 | php 自带的 | spawn-fcgi + spawn-php.sh + daemontools | php-fpm |
|---|---|---|---|
| php 守护进程: pid file, log file, setsid(), setuid(), setgid(), chroot() | (-) | (+) | (+) |
| 进程管理。可以用 "graceful" 来停止并启动 php worker 进程而不会丢失请求。能够平滑地升级配置和二进制程序而不丢失任何请求。 | php4 (-), php5 (只有 graceful) | (-) | (+) |
| 严格限制来源请求的 web server 的 ip 地址 | php4 (-), php5 (+) (从 5.2.2 开始) | (-) | (+) |
| 根据负载动态调整进程数 | (-) | (-) | TODO |
| 用不同的 uid/gid/chroot/environment 和不同的 php.ini 选项启动 worder 进程。你不需要 safe mode 了! | (-) | (-) | (+) |
| 记录业务进程 stdout 和 stderr 日志 | (-) | (-) | (+) |
| 如果使用优化器,在共享内存意外破坏的情况下紧急重启所有的进程 | (-) | (-) | (+) |
| 如果 set_time_limit() 失败,确保进程会结束 | (-) | (-) | (+) |
| 特性 | |||
| Error header | (+) | ||
| 支持加速上传 | (+) | ||
| fastcgi_finish_request() | (+) | ||
| SlowLog | (+) | ||
