Fle*_*der 19
PHP-FPM比PHP的旧FastCGI处理要好得多.从PHP 5.3.3开始,PHP-FPM处于核心状态,旧的FastCGI实现不再可用.
我的回答是刚刚投票(在网上相当一段时间后),我理解为什么,所以这里列出了为什么PHP-FPM实际上比旧的FastCGI实现更好.
首先,很长一段时间以来,PHP社区中的FastCGI实现很糟糕.可以在https://wiki.php.net/ideas/fastcgiwork上找到的文档页面,其中显示:
如果没有额外的"拐杖"(例如来自lighttpd发行版或php-fpm补丁的spawn-fcgi),php-cgi在生产环境中没用.该项目假设整合了这种"拐杖"并扩展php-cgi以支持不同的协议.
- 守护进程(分离,pid文件创建,设置环境变量,setuid/setgid/chroot)
- 优雅的重启
- 分离和改进传输层以支持不同的协议
- 支持SCGI协议
- 支持HTTP协议的子集
- ...
以下是从http://php-fpm.org/about/获取的PHP-FPM做得更好的列表:
- PHP系统守护进程:pid文件,日志文件
setsid()
,setuid()
,setgid()
,chroot()
- 流程管理.能够"优雅地"停止和启动PHP工作程序而不会丢失任何查询.这允许逐步更新配置和二进制文件而不会丢失任何查询.
- 限制请求来自的IP地址.
- 动态进程数,取决于负载(自适应进程生成).
- 使用不同的uid/gid/chroot/environment和不同的
php.ini
选项启动worker (不需要安全模式).- 记录
STDOUT
和STDERR
.- 如果使用加速器,则在意外破坏共享内存操作码缓存时紧急重启所有进程的能力.
- 如果
set_time_limit()
失败则强制完成进程.其他功能: - 错误标题 - 加速上传支持 -
fastcgi_finish_request()
- 带回溯的慢速日志
小智 6
一个小的修正:PHP FastCGI SAPI仍然可用,即使在PHP 5.5.x上也是如此.
[root@zulu1 ~]# /usr/local/php54/bin/php-cgi -v
PHP 5.4.17 (cgi-fcgi) (built: Jul 18 2013 05:12:07)
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
17767 次 |
最近记录: |