php安裝模式mod_php和Fastcgi的選擇與對(duì)比_PHP教程
推薦:一個(gè)常用的正則表達(dá)驗(yàn)證類(lèi)很早以前寫(xiě)的一個(gè)正則表達(dá)式驗(yàn)證工具類(lèi),包含了一些常見(jiàn)的校驗(yàn)和支持自定義的正則表達(dá)式匹配,可以選擇完全匹配,也可以獲取所有匹配項(xiàng)。曾用它仿造Eclispe下的正則表達(dá)式插件寫(xiě)過(guò)一個(gè)工具。因?yàn)樽罱蝗挥袔讉(gè)朋友都在問(wèn)這方面的問(wèn)題,干脆就把代碼貼出來(lái)好了。 using
安裝php又面臨到了模式的選擇,以前都是選擇mod_php模式,因?yàn)檫@樣安裝比較方便哈,今天突然關(guān)心起FastCGI這種模式,敗毒了一把,找到了一些關(guān)于mod_php和Fastcgi的選擇與對(duì)比這方面的討論,現(xiàn)在發(fā)出來(lái)留一個(gè)記號(hào),以便進(jìn)一步研究:
第一篇:php在apache中安裝模式的區(qū)別:fastcgi和mod_php
說(shuō)到fastCgi就不得不說(shuō)Cgi。
CGI英文全稱(chēng)是 Common Gateway Interface,通常翻譯為共同網(wǎng)關(guān)接口,是HTTP服務(wù)器與機(jī)器上的其他程序進(jìn)行通信的一個(gè)接口。這個(gè)“其他程序”可以使用任何計(jì)算機(jī)語(yǔ)言來(lái)編寫(xiě),它通過(guò)CGI這個(gè)接口從HTTP服務(wù)器取得輸入,然后把運(yùn)行的結(jié)果又通過(guò)CGI這個(gè)接口交給HTTP服務(wù)器,而HTTP服務(wù)器把這個(gè)結(jié)果送給瀏覽器。
CGI的出現(xiàn)讓W(xué)EB從靜態(tài)變?yōu)闉閯?dòng)態(tài),隨著Web的越來(lái)越普及,很多的網(wǎng)站的都需要有動(dòng)態(tài)的頁(yè)面,以便與瀏覽者互交。CGI方式的缺點(diǎn)也越來(lái)越突出。因?yàn)镠TTP要生成一個(gè)動(dòng)態(tài)頁(yè)面,系統(tǒng)就必須啟動(dòng)一個(gè)新的進(jìn)程以運(yùn)行CGI程序,不斷地fork是一項(xiàng)很消耗時(shí)間和資源的工作。這就出現(xiàn)了FastCGI。
百度百科關(guān)于FastCGI
2. FastCGI 可在任何平臺(tái)上使用,Netscape Enterprise 及 IIS 都有 FastCGI 的模塊可供使用,阿帕契 (Apache,以及利用 Apache 衍生出做的服務(wù)器) 上也有 mod_fastcgi 可用。
3. FastCGI 支持 C/C++,Ruby, Perl,Tcl,Java,Python 等程序語(yǔ)言。
4. FastCGI 的應(yīng)用程序亦兼容于 CGI。即 FastCGI 的應(yīng)用程序也可以當(dāng)成 CGI 來(lái)執(zhí)行。
5. 現(xiàn)有的 CGI 程序要改寫(xiě)成 FastCGI 非常簡(jiǎn)單,最少可能只需要多加入三行程序代碼。
6. FastCGI 的偵錯(cuò)方式與 CGI 大同小異,只要帶入程序所需的環(huán)境變量及參數(shù),即可在命令列模式執(zhí)行或偵錯(cuò)。
7. FastCGI 應(yīng)用程序的寫(xiě)作方式與 CGI 類(lèi)似,除了幾項(xiàng)原則要特別注意外,F(xiàn)astCGI 的寫(xiě)作方式跟 CGI 幾乎一樣,與學(xué)習(xí) Web Server API 比較起來(lái), FastCGI 簡(jiǎn)單多了。
8. FastCGI 支授分布式運(yùn)算 (distributed computing),即 FastCGI 程序可以在網(wǎng)站服務(wù)器以外的主機(jī)上執(zhí)行并且接受來(lái)自其它網(wǎng)站服務(wù)器來(lái)的請(qǐng)求。
mod_php就是把PHP做為APACHE一個(gè)內(nèi)置模塊。讓apache http服務(wù)器本身能夠支持PHP語(yǔ)言,不需要每一個(gè)請(qǐng)求就啟動(dòng)PHP解釋器來(lái)解釋PHP。
第二篇:mod_php or fastcgi性能比較與選擇
用php肯定少了不這個(gè)問(wèn)題的選擇,cgi自然就不必說(shuō)了,但是mod_php和fastcgi的爭(zhēng)論確還是比較多的。
找了一些資料,晾在這,可供參考。
首先,性能應(yīng)該是大家最關(guān)心的問(wèn)題了,除了mod_php和fastcgi 的 benchmark,還有一些服務(wù)器差別的測(cè)試,如apache vs lighthttpd
1 mod_php, LightTPD, FastCGI - What’s fastest?
這個(gè)bechmark的結(jié)果是 Apache(prefork)+Fastcgi+php的性能是最好的。超過(guò)了apache+mod_php,甚至也超過(guò)了lightty+fastcgi+php。當(dāng)然,這個(gè)結(jié)果得出值相差都很小。另外,以上說(shuō)的幾個(gè)結(jié)果都使用了APC加速,使用APC后性能提高1倍以上。
2 php4-mod-vs-cgi
這個(gè)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
上面的結(jié)果我覺(jué)得需要關(guān)注的是無(wú)cache的情況,因?yàn)槭褂胢od_php或fastcgi主要還是用來(lái)生成動(dòng)態(tài)頁(yè)面。前面的cache有更好的工具來(lái)實(shí)現(xiàn),如squid。所以,這個(gè)結(jié)果也是fastcgi勝出,相差也不大。
3 http://buytaert.net/drupal-performance?page=1
這個(gè)文章的結(jié)果和上面兩個(gè)剛好相反。使用fastcgi代替mod_php后,”When switching from
to
we observe a 63% slowdown for anonymous visitors, and a 18% slowdown for authenticated visitors.”以下是圖表

另外,benchmark中也做了和lightty的比較,如下圖:

這個(gè)文章的結(jié)論是Apache+mod_php性能好于Apache+fastcgi。另外,Apache+mod_php略好于lightty+fastcgi。
4 最后看看 fastcgi官方自己怎么說(shuō)的吧
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 結(jié)論是,還是根據(jù)自己的應(yīng)用測(cè)一下吧….
最后,個(gè)人觀點(diǎn)
如果mod_php和fastcgi的性能相差不是很大的話,還是傾向于fastcgi的,這種方式畢竟更靈活、安全和簡(jiǎn)單。
1 使用fastcgi,你的web server 可以比較簡(jiǎn)單的切換,可以測(cè)試不同的服務(wù)器,Apache,lightty,ngix 等等,不需要有代碼的修改
2 如果想換腳本的實(shí)現(xiàn),如不用php,而是改成perl,python之類(lèi)的,web服務(wù)器也不需要任何的改動(dòng)
3 web server和fastcgi可以用不同的帳號(hào)運(yùn)行,帶來(lái)了一定的安全隔離
4 只在Apache中編個(gè)mod_fastcgi可以說(shuō)是簡(jiǎn)單多了,把mod_php編進(jìn)apache時(shí),出問(wèn)題時(shí)很難定位是php的問(wèn)題還是apache的問(wèn)題,我就見(jiàn)過(guò)這樣的core,函數(shù)調(diào)用幾十層,一點(diǎn)頭緒都沒(méi)有。
分享:php如何調(diào)用c接口無(wú)錯(cuò)版1.首先是要安裝好PHP 2.進(jìn)入PHP的下載解壓目錄下的ext目錄 #cd /root/php-5.3.6/ext #./ext_skel --extname=hmc 說(shuō)明: ./ext_skel --extname=module_name module_name是你自己可以選擇的擴(kuò)展模塊的名字,例如我選擇的hmc。執(zhí)行工具后會(huì)自動(dòng)在ext目錄下建立你選擇的mod
- 一個(gè)常用的正則表達(dá)驗(yàn)證類(lèi)
- php如何調(diào)用c接口無(wú)錯(cuò)版
- C#調(diào)用windows api的要點(diǎn)
- PHP更新數(shù)據(jù)庫(kù)記錄
- PHP開(kāi)發(fā)注意事項(xiàng)總結(jié)
- PHP strtotime函數(shù)用法、實(shí)現(xiàn)原理和源碼分析
- 淺談php命令行用法
- php curl登陸qq后獲取用戶(hù)信息時(shí)證書(shū)錯(cuò)誤
- ecshop實(shí)現(xiàn)smtp發(fā)送郵件
- curl 模擬登錄 實(shí)現(xiàn)教程
- php生成Excel文件 實(shí)現(xiàn)代碼
- PHP-redis命令文檔
- 相關(guān)鏈接:
- 教程說(shuō)明:
PHP教程-php安裝模式mod_php和Fastcgi的選擇與對(duì)比
。