1 、 CGI(通用閘道器介面/Common Gateway Interface)一般是可執行程式,例如 EXE 檔案,和 WEB 站羣服務器各自佔據著不同的程序, 而且一般一個 CGI 程式只能處理一個使用者請求。這樣,當用 户請求數量非常多時,會大量佔用系統的資源,如內存、 CPU 時間等,造成效能低下。
2 、 ISAPI(Internet Server Application Program Interface)是微軟提供的一套面向 WEB 服務的 API 介面,它能實現 CGI 提供的全部功能,並在此基礎上進行了擴充套件,如提供了過濾器應用程式介面。 ISAPI 應用大多數以 DLL 動態庫的形式使用,可以在被使用者請求後執行,,在處理完一個使用者請求後不會馬上消失,而是繼續駐留在內存中等待處理別的 使用者輸入。此外,ISAPI 的 DLL 應用程式和 WEB 站羣服務器處於同一個程序中,效率要顯著高於 CGI 。
3 、 FastCGI 是可伸縮架構的 CGI 開放擴充套件,其主要行為是將 CGI 直譯器程序保持在內存中並因此獲得較高的效能。傳統的 CGI 直譯器的反覆載入是 CGI 效能低下的主要原因,如果 CGI 直譯器保持在內存中並接受 FastCGI 程序管理器排程,則可以提供良好的效能、伸縮性等。
以 ISAPI 模式執行 PHP 的,這種方式最大的缺點就是穩定性不好,當 PHP 出錯的時候,Apache 程序也死掉。
FastCGI 模式執行 PHP 的優點:
首先就是 PHP 出錯的時候不會搞垮 Apache,只是 PHP 自己的程序當掉(但 FastCGI 會立即重新啓動一個新 PHP 程序來代替當掉的程序)。
其次 FastCGI 模式執行 PHP 比 ISAPI 模式效能更好
最後,就是可以同時執行 PHP5 和 PHP4.
FastCGI 模式的一些缺點:
用 FastCGI 模式更適合生產環境的站羣服務器,但對於開發用機器來説就不太合適。因為當使用 Zend Studio 除錯程式時,由於 FastCGI 會認為 PHP 程序超時,從而在頁面返回 500 錯誤。
4.CLI 模式
從版本 4.3.0 開始,PHP 提供了一種新型別的 SAPI(Server Application Programming Interface,服務端應用程式設計埠)支援,名為 CLI,意為 Command Line Interface,即命令列介面。顧名思義,該 SAPI 模組主要用作 PHP 的開發外殼應用。 CLI SAPI 和其它 SAPI 模組相比有很多的不同之處。值得一提的是,CLI 和 CGI 是不同的 SAPI,儘管它們之間有很多共同的行為。
以下為 CLI SAPI 和其它 SAPI 模組相比的顯著區別:
* 與 CGI SAPI 不同,其輸出沒有任何頭資訊。儘管 CGI SAPI 提供了取消 HTTP 頭資訊的方法,但在 CLI SAPI 中並不存在類似的方法以開啓 HTTP 頭資訊的輸出。 CLI 預設以安靜模式開始,但為了保證相容性,-q 和 –no-header 引數為了向後相容仍然保留,使得可以使用舊的 CGI 指令碼。在執行時,不會把工作目錄改為指令碼的當前目錄(可以使用 -C 和 –no-chdir 引數來相容 CGI 模式)。出錯時輸出純文字的錯誤資訊(非 HTML 格式)。
* CLI SAPI 強制覆蓋了 php.ini 中的某些設定,因為這些設定在外殼環境下是沒有意義的。