作者:zhoukaipc | 来源:互联网 | 2013-08-08 09:55
nginx通过FastCGI运行PHP比Apache包含PHP环境有明显的优势,最近有消息称,PHP5.4将很有可能把PHP-FPM补丁包含在内核里,nginx服务器平台上运行PHP将更加轻松
前面我曾介绍过Nginx + PHP-FPM + APC=绝妙的组合,最近有消息称,PHP5.4将很有可能把PHP-FPM ( PHP FastCGI进程管理器 )补丁包含在内核里。这个新闻对于在nginx服务器平台上运行PHP的人们来说是一个极大地惊喜。或许你会有这样的疑问:“PHP-FPM是什么东西?我们为什么要关注它?”
PHP-FPM是为PHP内核编写的补丁,用来根据需要处理FastCGI进程的启动,停止以及重启。这是非常关键的功能,因为nginx只能通过FastCGI实现同PHP的接口。nginx不能像Apache那样把所有的PHP环境加载到自身。nginx通过FastCGI运行PHP比Apache包含PHP环境有明显的优势:
◆较低的内存占用率(因为nginx单独运行时不用加载整个PHP环境)。
◆轻松地管理用户权限( 因为PHP可以在你的服务器进程中管理不同的用户)。
◆当PHP崩溃时,nginx可以照常运行。
它的缺点是,相比之下需要安装及设置mod_php,nginx,PHP和FastCGI。在过去,这种安装工作需要从LightTPD工程中增选spawn-fcgi脚本,然后使用它启动FastCGI进程。可是这种安装存在一些问题:它很脆弱(当进程停止之后可能无法正常重启)而且这种安装方法非常繁琐。安装并配置好nginx之后你还需要下载LightTPD,针对性地设置脚本,将其设置为自动启动,然后保障这些同时正常地运行。如果你习惯于“拿来主义”,开箱即用mod_php,那么也许会让你确信nginx是个劣质品,尤其是当你刚刚升级了服务器替换了原来的精简的平台的时候。
使用PHP-FPM。这个补丁会把FastCGI进程管理功能嵌入到PHP中。所以当你使用FPM补丁编译PHP并且选定了enalbe-fpm选项的时候,nginx会根据需要控制PHP进程的启动和停止。这样就省去了以前繁琐的配置步骤了。当然,对于喜欢省事儿的网站开发人员来说手动配置补丁和编译PHP代码还是有点繁琐。现在我要告诉大家此新闻给我们带来的惊喜:PHP5.4将会把FPM补丁直接包含到PHP工程的内核里面!
这意味着你只需要下载PHP就能编译了。你不再需要设置enalbe-fpm,不再需要考虑如何与nginx同步的问题,还有努力采取与Apache相同设置的问题。
也许你曾经尝试过在nginx平台上运行PHP,而且对其繁破口大骂过。我要向你郑重建议去试一下PHP-FPM。虽然它现在仍然存在一点问题,但是它时时刻刻在进步的。在此期间,也许你能体会到同在街头玩耍的小孩子突然得到一个超酷的玩具一般的惊喜。