php-fpm for php-5.3.8
作者: 曲文庆 日期: 2011-08-25 23:02
自打php集成了php-fpm后,发现php调整了策略,不再支持spawn-fcgi模式使用fastcgi了。
以前使用fastcgi时候,通过带--enable-fastcgi参数编译php,生成php-cgi文件,使用lighttpd的spawn-fcgi产生php-cgi进程,通过socket或者端口监听模式使用。
该方式在php-5.3.3还支持,在php-5.3.6(之间的版本未测试)之后,编译配置选项里已没有 --enable-fastcgi 了,是否意味着已无法通过spawn-fcgi使用fastcgi了?
方式的减少,意味着开发者选择面更窄了,意味着php对自身产品的功能垄断,对此,鄙视一下。同时对lighttpd表示默哀。
(2011年11月17日注:近期通过朋友提示,发现对php新版的理解还是有误区的,php集成php-fpm后,并非不支持fastcgi模式,而是在fastcgi和fpm模式之间二选一,通过是否启用enable-fpm来决定使用fpm还是fastcgi。难道两者不能同时启用?)
PHP-FPM提供了更好的PHP进程管理方式,可以有效控制内存和进程、可以平滑重载PHP配置,比spawn-fcgi具有更多优点PS. PHP5.3.3已经集成php-fpm了,不再是第三方的包了。
Error header
范围:php.ini 选项
分类:便利性默认情况下,如果被访问的php脚本包含语法错误,用户会收到一个空的“200 ok”页。这是不方便的。Error header 这个 php.ini 选项允许在这种情况下产生一个 HTTP 错误码,比如“HTTP/1.0 550 Server Made Big Boo”,从而中断web server请求并显示一个正确的错误页。如果要实现这样的功能,需要在 php.ini 中添加一条 fastcgi.error_header = "HTTP/1.0 550 Server Made Big Boo"
在 php-5.2.4 中添加了类似,但不相同的功能:如果被访问的php脚本包含语法错误,并且 display_errors = off,会立刻返回“HTTP/1.0 500 Internal Server Error”。
如果你需要设定一个 503 错误,或者想要使这个行为独立于 display_errors 的设置,那么可以使用fastcgi.error_header。如果你在 php-5.2.5 或以上版本上启用 php-fpm,那么 fastcgi.error_header的优先级更高。
fastcgi_finish_request()
范围:php 函数
类型:优化这个特性可以提高一些 php 请求的处理速度。如果有些处理可以在页面生成完后进行,就可以使用这种优化。比如,在 memcached 中保存 session 就可以在页面交给 web server 后进行。fastcgi_finisth_request() ,这一特性可以结束响应输出,web server 可以立即开始交给等不及的客户端,而此刻,php 可以在请求的上下文环境中处理许多事情。比如保存session,转换上传的视频,处理统计等等。
fastcgi_finisth_request() 会触发 shutdown 函数运行。
request_slowlog_timeout
这个选项能让你跟踪执行缓慢的脚本并把他们连同调用栈一起记录再日志文件中。例如如下设置:
以前使用fastcgi时候,通过带--enable-fastcgi参数编译php,生成php-cgi文件,使用lighttpd的spawn-fcgi产生php-cgi进程,通过socket或者端口监听模式使用。
该方式在php-5.3.3还支持,在php-5.3.6(之间的版本未测试)之后,编译配置选项里已没有 --enable-fastcgi 了,是否意味着已无法通过spawn-fcgi使用fastcgi了?
方式的减少,意味着开发者选择面更窄了,意味着php对自身产品的功能垄断,对此,鄙视一下。同时对lighttpd表示默哀。
(2011年11月17日注:近期通过朋友提示,发现对php新版的理解还是有误区的,php集成php-fpm后,并非不支持fastcgi模式,而是在fastcgi和fpm模式之间二选一,通过是否启用enable-fpm来决定使用fpm还是fastcgi。难道两者不能同时启用?)
什么是php-fpm
PHP FastCGI管理器(PHP FASTCGI PROCESS MANAGER )PHP-FPM提供了更好的PHP进程管理方式,可以有效控制内存和进程、可以平滑重载PHP配置,比spawn-fcgi具有更多优点PS. PHP5.3.3已经集成php-fpm了,不再是第三方的包了。
特性
Description | PHP "out of the box" | spawn-fcgi + spawn-php.sh + daemontools | PHP-FPM | |
PHP daemonization: pid file, log file, setsid(), setuid(), setgid(), chroot() 支持守护进程化 | (-) | (+) | (+) | |
Process Management. Ability to "gracefully" stop and start PHP workers without losing any queries. This allows gradually updating the configuration and binary without losing any queries. 支持平滑升级 | php4 (-), php5 (only graceful completion) | (-) | (+) | |
Restricting IP addresses from which requests can come from 请求的IP限制 | php4 (-), php5 (+) (since 5.2.2) | (-) | (+) | |
Dynamic number of processes, depending on the load (adaptive process spawning) 根据负载调整进程数量(PHP5.3.6) | (-) | (-) | (+) | |
Starting the workers with different uid/gid/chroot/environment and different php.ini options. (No need for safe mode.) 设置WORK的启动权限 | (-) | (-) | (+) | |
Logging stdout and stderr 记录进程的日志 | (-) | (-) | (+) | |
Ability to emergency restart all the processes in the event of an accidental destruction of the shared memory opcode cache, if using an accelerator 使用优化器,在共享内存意外破坏下紧急重启所有进程 | (-) | (-) | (+) | |
Forcing the completion of process if set_time_limit() fails | (-) | (-) | (+) | |
Features | ||||
Error Header 在PHP.INI里 定义错误HEADER | (+) | |||
Accelerated Upload Support 优化大文件上传(需要NGX支持) | (+) | |||
fastcgi_finish_request() 提供PHP函数,提示webserver输出 | (+) | |||
Slowlog 记录慢请求 | (+) |
范围:php.ini 选项
分类:便利性默认情况下,如果被访问的php脚本包含语法错误,用户会收到一个空的“200 ok”页。这是不方便的。Error header 这个 php.ini 选项允许在这种情况下产生一个 HTTP 错误码,比如“HTTP/1.0 550 Server Made Big Boo”,从而中断web server请求并显示一个正确的错误页。如果要实现这样的功能,需要在 php.ini 中添加一条 fastcgi.error_header = "HTTP/1.0 550 Server Made Big Boo"
在 php-5.2.4 中添加了类似,但不相同的功能:如果被访问的php脚本包含语法错误,并且 display_errors = off,会立刻返回“HTTP/1.0 500 Internal Server Error”。
如果你需要设定一个 503 错误,或者想要使这个行为独立于 display_errors 的设置,那么可以使用fastcgi.error_header。如果你在 php-5.2.5 或以上版本上启用 php-fpm,那么 fastcgi.error_header的优先级更高。
fastcgi_finish_request()
范围:php 函数
类型:优化这个特性可以提高一些 php 请求的处理速度。如果有些处理可以在页面生成完后进行,就可以使用这种优化。比如,在 memcached 中保存 session 就可以在页面交给 web server 后进行。fastcgi_finisth_request() ,这一特性可以结束响应输出,web server 可以立即开始交给等不及的客户端,而此刻,php 可以在请求的上下文环境中处理许多事情。比如保存session,转换上传的视频,处理统计等等。
fastcgi_finisth_request() 会触发 shutdown 函数运行。
request_slowlog_timeout
这个选项能让你跟踪执行缓慢的脚本并把他们连同调用栈一起记录再日志文件中。例如如下设置:
修改php-fpm选项: request_slowlog_timeout=5s slowlog=/var/logs/fpm_slow.log |
评论: 2 |
引用: 0 |
阅读: 12980
php 5.3 不建议使用的函数 (2010-05-19 16:53)
php 5.3 中新增加的魔术变量 __DIR__ (2010-05-14 13:46)
windows server 2003 IIS上安装 PHP 5.3 (2010-03-03 15:53)
PHP 5.3新版特性浅析 (2009-12-25 17:19)
mysqlnd成为php 5.3中的默认mysql驱动 (2009-12-25 17:14)
PHP文件上传源码分析(RFC1867) (2009-12-25 11:21)
谈PHP 闭包特性在实际应用中的问题 (2009-12-25 11:13)
Nginx配置PHP的一个关键注意点 (2009-02-02 17:20)
PHP中使用OpenSSL来产生证书加密解密源代码 (2008-12-05 11:56)