php安裝模式mod_php和Fastcgi的選擇與對比_PHP教程
推薦:一個常用的正則表達驗證類很早以前寫的一個正則表達式驗證工具類,包含了一些常見的校驗和支持自定義的正則表達式匹配,可以選擇完全匹配,也可以獲取所有匹配項。曾用它仿造Eclispe下的正則表達式插件寫過一個工具。因為最近突然有幾個朋友都在問這方面的問題,干脆就把代碼貼出來好了。 using
安裝php又面臨到了模式的選擇,以前都是選擇mod_php模式,因為這樣安裝比較方便哈,今天突然關心起FastCGI這種模式,敗毒了一把,找到了一些關于mod_php和Fastcgi的選擇與對比這方面的討論,現(xiàn)在發(fā)出來留一個記號,以便進一步研究:
第一篇:php在apache中安裝模式的區(qū)別:fastcgi和mod_php
說到fastCgi就不得不說Cgi。
CGI英文全稱是 Common Gateway Interface,通常翻譯為共同網(wǎng)關接口,是HTTP服務器與機器上的其他程序進行通信的一個接口。這個“其他程序”可以使用任何計算機語言來編寫,它通過CGI這個接口從HTTP服務器取得輸入,然后把運行的結果又通過CGI這個接口交給HTTP服務器,而HTTP服務器把這個結果送給瀏覽器。
CGI的出現(xiàn)讓WEB從靜態(tài)變?yōu)闉閯討B(tài),隨著Web的越來越普及,很多的網(wǎng)站的都需要有動態(tài)的頁面,以便與瀏覽者互交。CGI方式的缺點也越來越突出。因為HTTP要生成一個動態(tài)頁面,系統(tǒng)就必須啟動一個新的進程以運行CGI程序,不斷地fork是一項很消耗時間和資源的工作。這就出現(xiàn)了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 來執(zhí)行。
5. 現(xiàn)有的 CGI 程序要改寫成 FastCGI 非常簡單,最少可能只需要多加入三行程序代碼。
6. FastCGI 的偵錯方式與 CGI 大同小異,只要帶入程序所需的環(huán)境變量及參數(shù),即可在命令列模式執(zhí)行或偵錯。
7. FastCGI 應用程序的寫作方式與 CGI 類似,除了幾項原則要特別注意外,F(xiàn)astCGI 的寫作方式跟 CGI 幾乎一樣,與學習 Web Server API 比較起來, FastCGI 簡單多了。
8. FastCGI 支授分布式運算 (distributed computing),即 FastCGI 程序可以在網(wǎng)站服務器以外的主機上執(zhí)行并且接受來自其它網(wǎng)站服務器來的請求。
mod_php就是把PHP做為APACHE一個內(nèi)置模塊。讓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的環(huán)境下完成的。其summary.txt的內(nèi)容如下。
------------------------
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主要還是用來生成動態(tài)頁面。前面的cache有更好的工具來實現(xiàn),如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 結論是,還是根據(jù)自己的應用測一下吧….
最后,個人觀點
如果mod_php和fastcgi的性能相差不是很大的話,還是傾向于fastcgi的,這種方式畢竟更靈活、安全和簡單。
1 使用fastcgi,你的web server 可以比較簡單的切換,可以測試不同的服務器,Apache,lightty,ngix 等等,不需要有代碼的修改
2 如果想換腳本的實現(xiàn),如不用php,而是改成perl,python之類的,web服務器也不需要任何的改動
3 web server和fastcgi可以用不同的帳號運行,帶來了一定的安全隔離
4 只在Apache中編個mod_fastcgi可以說是簡單多了,把mod_php編進apache時,出問題時很難定位是php的問題還是apache的問題,我就見過這樣的core,函數(shù)調(diào)用幾十層,一點頭緒都沒有。
分享:php如何調(diào)用c接口無錯版1.首先是要安裝好PHP 2.進入PHP的下載解壓目錄下的ext目錄 #cd /root/php-5.3.6/ext #./ext_skel --extname=hmc 說明: ./ext_skel --extname=module_name module_name是你自己可以選擇的擴展模塊的名字,例如我選擇的hmc。執(zhí)行工具后會自動在ext目錄下建立你選擇的mod
- 相關鏈接:
- 教程說明:
PHP教程-php安裝模式mod_php和Fastcgi的選擇與對比
。