文章归档友情连接照片地图

PHP三种运行方式mod_php5/cgi/fast-cgi

分类:PHP编程  作者:rming  时间:2014-07-26

PHP三种运行方式mod_php5/cgi/fast-cgi

a.通过HTTPServer内置的模块来实现,

例如Apache的mod_php5,类似的Apache内置的mod_perl可以对perl支持;

b.通过CGI来实现

这个就好比之前perl的CGI,该种方式的缺点是性能差,因为每次服务器遇到这些脚本都需要重新启动脚本解析器来执行脚本然后将结果返回给服务器;另一方面就是不太安全;该方面几乎很少使用了。

c.最新出现一种叫做FastCGI。

所谓FastCGI就是对CGI的改进。它一般采用C/S结构,一般脚本处理器会启动一个或者多个daemon进 程,每次HTTPServer遇到脚本的时候,直接交付给FastCGI的进程来执行,然后将得到的结果(通常为html)返回给浏览器。

该种方法的问题存在一个小问题是当遇到大流量的频繁请求的话,脚本处理器的daemon进程可能会超负荷从而变得很慢,甚至发生内存泄漏;

但是比较起Apache的内置模块的方式的优点是由于Server和脚本解析器完全分开各负其责,因此服务器不再臃肿,可以专心地进行静态文件响 应或者将动态脚本解析器的结果返回给用户客户端。所以比较起Apache的内置模块方式,有时候性能要提高很多。有人测试可能会达到 Apache+mod_php的5~10倍。

三种常用模式:

Apache+mod_php5;

lightppd+spawn-fcgi;

nginx+PHP-FPM

我们可以使用到生产环境中的:

0) 如果不是server cluster的话:

可以使用以上任一种,不过有各种测试表明nginx+PHP-FPM性能优越,但是Apache+mod_php5很经典模块多,比如对.htaccess等的支持。

如果构建server cluster的话:

1) nginx作为反向代理服务器,后台多台Apache+mod_php5。

nginx处理静态文件,及对php并发请求对后台多台app server的负载均衡;

2) nginx作为反向代理器,后台多台PHP-FPM

nginx处理静态文件及将php并发请求发送到后台php-fpm来解析;



提交评论