安装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
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 服务器
1 mod_php, LightTPD, FastCGI - What’s fastest?
这个bechmark的结果是 Apache(prefork)+Fastcgi+php的性能是最好的。超过了apache+mod_php,甚至也超过了lightty+fastcgi+php。固然,这个结果得出值相差都很小。另外,以上说的几个结果都使用了APC加速,使用APC后性能提升1倍以上。 app
2 php4-mod-vs-cgi
这个bechmark是在php4的环境下完成的。其summary.txt的内容以下。 dom
上面的结果我以为须要关注的是无cache的状况,由于使用mod_php或fastcgi主要仍是用来生成动态页面。前面的cache有更好的工具来实现,如squid。因此,这个结果也是fastcgi胜出,相差也不大。
3 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,函数调用几十层,一点头绪都没有