1、cgi(通用網(wǎng)關(guān)接口/common gateway interface)一般是可執(zhí)行程序,例如exe文件,和web服務(wù)器各自占據(jù)著不同的進程,而且一般一個cgi程序只能處理一個用戶請求。這樣,當用戶請求數(shù)量非常多時,會大量占用系統(tǒng)的資源,如內(nèi)存、cpu時間等,造成效能低下。
2、isapi(internet server application program interface)是微軟提供的一套面向web服務(wù)的api接口,它能實現(xiàn)cgi提供的全部功能,并在此基礎(chǔ)上進行了擴展,如提供了過濾器應(yīng)用程序接口。isapi應(yīng)用大多數(shù)以dll動態(tài)庫的形式使用,可以在被用戶請求后執(zhí)行,,在處理完一個用戶請求后不會馬上消失,而是繼續(xù)駐留在內(nèi)存中等待處理別的用戶輸入。此外,isapi的dll應(yīng)用程序和web服務(wù)器處于同一個進程中,效率要顯著高于cgi。
在windows server 2003的iis6下配置isapi方式的php,配置方法是,在iis的“web服務(wù)擴展”中,添加一個新的web服務(wù)擴展,程序后綴為php,isapi程序為php5isapi.dll,然后再“環(huán)境變量”-“系統(tǒng)變量”中增加變量名phprc,數(shù)值為php.ini的路徑,在internet信息服務(wù)管理器中,選擇網(wǎng)站或應(yīng)用程序的根目錄,打開目錄屬性頁(右鍵選擇“屬性”),再選擇“主目錄”。點擊“配置”按鈕,選擇“映射”tab頁。點擊“添加...”,在“可執(zhí)行文件”設(shè)為: c:phpphp5isapi.dll,擴展名設(shè)為.php,選擇“確認文件是否存在”,然后“確定”保存設(shè)置。重啟服務(wù)器即可完成php的配置。
3、fastcgi是可伸縮架構(gòu)的cgi開放擴展,其主要行為是將cgi解釋器進程保持在內(nèi)存中并因此獲得較高的性能。傳統(tǒng)的cgi解釋器的反復(fù)加載是cgi性能低下的主要原因,如果cgi解釋器保持在內(nèi)存中并接受fastcgi進程管理器調(diào)度,則可以提供良好的性能、伸縮性等。
fastcgi已經(jīng)集成于iis7,也支持iis6,在iis6中的安裝方法可參見微軟的官方文檔,我這里簡單翻譯一下。
先點這里下載一個32位的fastcgi extension for iis,然后將其安裝,安裝后的文件應(yīng)該放到system32inetsrv目錄下。
之后打開system32inetsrv目錄,執(zhí)行下面的語句,其中c:php為你的php目錄,可以修改為其他數(shù)值。
cscript fcgiconfig.js -add -section:php -extension:php -path:c:phpphp-cgi.exe
在internet信息服務(wù)管理器中,選擇網(wǎng)站或應(yīng)用程序的根目錄,打開目錄屬性頁(右鍵選擇“屬性”),再選擇“主目錄”。點擊“配置”按鈕,選擇“映射”tab頁。點擊“添加...”,在“可執(zhí)行文件”設(shè)為: c:windowssystem32inetsrvfcgiext.dll,擴展名設(shè)為.php,選擇“確認文件是否存在”,然后“確定”保存設(shè)置。
修改php.ini文件,增加如下語句:
fastcgi.impersonate = 1
cgi.fix_pathinfo = 1
cgi.force_redirect = 0
之后打開system32inetsrv目錄,執(zhí)行以下語句:
cscript fcgiconfig.js -set -section:php -instancemaxrequests:10000
cscript fcgiconfig.js -set -section:php -environmentvars:php_fcgi_max_requests:10000
最后,配置c:php目錄的安全性,使得iis_wpg組對于這個目錄有讀取和執(zhí)行的權(quán)限。
這時候,基于fastcgi的php就成功配置到iis6上了。
更多信息請查看IT技術(shù)專欄