php安裝模式mod_php和Fastcgi的選擇與對比
安裝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
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
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的內容如下。
------------------------
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勝出,相差也不大。
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,函數調用幾十層,一點頭緒都沒有。
http://www.bkjia.com/PHPjc/953966.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/953966.htmlTechArticlephp安裝模式mod_php和Fastcgi的選擇與對比 安裝php又面臨到了模式的選擇,以前都是選擇mod_php模式,因為這樣安裝比較方便哈,今天突然關心起...