php安装模式mod_php和Fastcgi的选择与对比

安装php又面临到了模式的选择,之前都是选择mod_php模式,由于这样安装比较方便哈,今天忽然关心起FastCGI这种模式,败毒了一把,找到了一些关于mod_php和Fastcgi的选择与对比这方面的讨论,如今发出来留一个记号,以便进一步研究: php

第一篇:php在apache中安装模式的区别:fastcgi和mod_php html

     说到fastCgi就不得不说Cgi。
     CGI英文全称是 Common Gateway Interface,一般翻译为共同网关接口,是HTTP服务器与机器上的其余程序进行通讯的一个接口。这个“其余程序”可使用任何计算机语言来编写,它经过CGI这个接口从HTTP服务器取得输入,而后把运行的结果又经过CGI这个接口交给HTTP服务器,而HTTP服务器把这个结果送给浏览器。
python

     CGI的出现让WEB从静态变为为动态,随着Web的愈来愈普及,不少的网站的都须要有动态的页面,以便与浏览者互交。CGI方式的缺点也愈来愈突出。由于HTTP要生成一个动态页面,系统就必须启动一个新的进程以运行CGI程序,不断地fork是一项很消耗时间和资源的工做。这就出现了FastCGI。 web

   百度百科关于FastCGI apache


2. FastCGI 可在任何平台上使用,Netscape Enterprise 及 IIS 都有 FastCGI 的模块可供使用,阿帕契 (Apache,以及利用 Apache 衍生出作的服务器) 上也有 mod_fastcgi 可用。
3. FastCGI 支持 C/C++,Ruby, Perl,Tcl,Java,Python 等程序语言。
4. FastCGI 的应用程序亦兼容于 CGI。即 FastCGI 的应用程序也能够当成 CGI 来执行。
5. 现有的 CGI 程序要改写成 FastCGI 很是简单,最少可能只须要多加入三行程序代码。
6. FastCGI 的侦错方式与 CGI 大同小异,只要带入程序所需的环境变量及参数,便可在命令列模式执行或侦错。
7. FastCGI 应用程序的写做方式与 CGI 相似,除了几项原则要特别注意外,FastCGI 的写做方式跟 CGI 几乎同样,与学习 Web Server API 比较起来, FastCGI 简单多了。
8. FastCGI 支授分布式运算 (distributed computing),即 FastCGI 程序能够在网站服务器之外的主机上执行而且接受来自其它网站服务器来的请求。

     mod_php就是把PHP作为APACHE一个内置模块。让apache http服务器自己可以支持PHP语言,不须要每个请求就启动PHP解释器来解释PHP。 浏览器

第二篇:mod_php or fastcgi性能比较与选择 安全

用php确定少了不这个问题的选择,cgi天然就没必要说了,可是mod_php和fastcgi的争论确仍是比较多的。
找了一些资料,晾在这,可供参考。
首先,性能应该是你们最关心的问题了,除了mod_php和fastcgi 的 benchmark,还有一些服务器差异的测试,如apache vs lighthttpd
服务器

mod_php, LightTPD, FastCGI - What’s fastest?
     这个bechmark的结果是 Apache(prefork)+Fastcgi+php的性能是最好的。超过了apache+mod_php,甚至也超过了lightty+fastcgi+php。固然,这个结果得出值相差都很小。另外,以上说的几个结果都使用了APC加速,使用APC后性能提升1倍以上。 app

php4-mod-vs-cgi
   这个bechmark是在php4的环境下完成的。其summary.txt的内容以下。 dom


------------------------

PHP4 module, very simple script (phpinfo.php): requests/s
plain 130.04
+turckcache 129.42
+turckcache+zend-optimizer 125.50

PHP4 module, very complex script (insurance application): requests/s
plain 1.84
+turckcache 6.23
+turckcache+zend-optimizer 5.58
+optimizer 1.58

PHP4 CGI, very simple script (phpinfo.php): requests/s
plain 22.69
+turckcache n/a*
+turckcache+zend-optimizer n/a*
+optimizer 21.23

PHP4 CGI, very complex script (insurance application): requests/s
plain 2.00
+turckcache n/a*
+turckcache+zend-optimizer n/a*
+optimizer 1.72

* = turkcache doesn't support caching of the PHP scripts in CGI mode

上面的结果我以为须要关注的是无cache的状况,由于使用mod_php或fastcgi主要仍是用来生成动态页面。前面的cache有更好的工具来实现,如squid。因此,这个结果也是fastcgi胜出,相差也不大。

http://buytaert.net/drupal-performance?page=1
   这个文章的结果和上面两个恰好相反。使用fastcgi代替mod_php后,”When switching from

to

we observe a 63% slowdown for anonymous visitors, and a 18% slowdown for authenticated visitors.”如下是图表

另外,benchmark中也作了和lightty的比较,以下图:

这个文章的结论是Apache+mod_php性能好于Apache+fastcgi。另外,Apache+mod_php略好于lightty+fastcgi。

4 最后看看 fastcgi官方本身怎么说的吧
    Of course, the answer is that it depends upon the application. A more complete answer is that FastCGI often wins by a significant margin, and seldom loses by very much.

5 结论是,仍是根据本身的应用测一下吧….

最后,我的观点
若是mod_php和fastcgi的性能相差不是很大的话,仍是倾向于fastcgi的,这种方式毕竟更灵活、安全和简单。
1 使用fastcgi,你的web server 能够比较简单的切换,能够测试不一样的服务器,Apache,lightty,ngix 等等,不须要有代码的修改
2 若是想换脚本的实现,如不用php,而是改为perl,python之类的,web服务器也不须要任何的改动
3 web server和fastcgi能够用不一样的账号运行,带来了必定的安全隔离
4 只在Apache中编个mod_fastcgi能够说是简单多了,把mod_php编进apache时,出问题时很难定位是php的问题仍是apache的问题,我就见过这样的core,函数调用几十层,一点头绪都没有



原文连接: http://blog.csdn.net/21aspnet/article/details/3280512
相关文章
相关标签/搜索