安裝php又面臨到了模式的選擇,以前都是選擇mod_php模式,因為這樣安裝比較方便哈,今天突然關心起FastCGI這種模式,敗毒了一把,找到了一些關於mod_php和Fastcgi的選擇與對比這方面的討論,現在發出來留一個記號,以便進一步研究:
第一篇:php在apache中安裝模式的區別:fastcgi和mod_php
說到fastCgi就不得不說Cgi。
CGI英文全稱是 Common Gateway Interface,通常翻譯為共同網關接口,是HTTP服務器與機器上的其他程序進行通信的一個接口。這個“其他程序”可以使用任何計算機語言來編寫,它通過CGI這個接口從HTTP服務器取得輸入,然後把運行的結果又通過CGI這個接口交給HTTP服務器,而HTTP服務器把這個結果送給浏覽器。
CGI的出現讓WEB從靜態變為為動態,隨著Web的越來越普及,很多的網站的都需要有動態的頁面,以便與浏覽者互交。CGI方式的缺點也越來越突出。因為HTTP要生成一個動態頁面,系統就必須啟動一個新的進程以運行CGI程序,不斷地fork是一項很消耗時間和資源的工作。這就出現了FastCGI。
百度百科關於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
1 mod_php, LightTPD, FastCGI - What’s fastest?
這個bechmark的結果是 Apache(prefork)+Fastcgi+php的性能是最好的。超過了apache+mod_php,甚至也超過了lightty+fastcgi+php。當然,這個結果得出值相差都很小。另外,以上說的幾個結果都使用了APC加速,使用APC後性能提高1倍以上。
2 php4-mod-vs-cgi
這個bechmark是在php4的環境下完成的。其summary.txt的內容如下。
上面的結果我覺得需要關注的是無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,函數調用幾十層,一點頭緒都沒有