sapi提供了乙個和外部通訊的介面,常見的sapi有:cgi、fast-cgi、cli、apache模組的dll、isapi
cgi 即通用閘道器介面(commom gateway inte***ce),它把網頁和web伺服器中的執行程式連線起來,把從html接收的指令傳遞給伺服器的執行程式,再把伺服器執行程式的結果返還給html頁。cgi的跨平台效能極佳,幾乎可以在任何作業系統上實現。
cgi方式在遇到連線請求先要建立cgi的子程序,啟用乙個cgi程序,然後處理請求,處理完後結束這個子程序。這就是fork-and-execute模式。所以用cgi方式的伺服器有多少連線請求就會有多少cgi子程序,子程序反覆載入是cgi效能低下的主要原因。都會當使用者請求數量非常多時,會大量擠占系統的資源如記憶體,cpu時間等,造成效能低下。
fast-cgi 是 cgi的公升級版本,fastcgi可以看成是乙個常駐型的cgi,它可以一直執行著,只要啟用後,不會每次都要花費時間去fork一次。php使用php-fpm(fastcgi process manager),全稱php fastcgi 程序管理器進行管理。
fastcgi的工作原理:
1、web server啟動時載入fastcgi程序管理器
2、fastcgi程序管理器自身初始化,啟動多個cgi直譯器(可見多個php-cgi)並等待來自web server的連線
3、當客戶端請求到達web server是,fastcgi程序管理器選擇並連線到乙個cgi直譯器。web server將cgi環境變數和標準輸入傳送到fastcgi子程序php-cgi
4、fastcgi子程序完成處理後將標準輸出和錯誤資訊從同一連線返回web server。當fastcgi子程序關閉連線是,請求便告知處理完成。fastcgi子程序接著等待並處理來自fastcgi繼承管理器的下乙個連線。在cgi模式中,php-cgi在此便退出了。
cgi每個web請求php都必須重新解析php.ini、重新載入全部擴充套件並重出始化全部資料結構。而使用fastcgi,所有這些都只在程序啟動時發生一次。乙個額外的好處是,持續資料庫連線可以工作。
cli 是php的命令執行模式(linux下 php -m 查詢php安裝了哪些擴充套件就是php命令列模式)
在模組化(dll)中,php是與web伺服器一起啟動並執行(是apache在cgi的基礎上進行的一種擴充套件,加快php的執行效率)
php執行四種模式
四種分別如下 簡答說明下 cli 就是命令列,例如可以在控制台或者是shell中鍵入命令 php f index.phpcgi 規定了php與web server交流的規則,相當於執行了response exec php f index.php url cookie fastcgi這個一般nginx...
PHP四種執行模式
cgi模式,通用閘道器介面,它允許web伺服器通過特定的協議與應用程式通訊,呼叫原理為 使用者請求 web伺服器接收請求 fork子程序呼叫程式 執行程式 程式返回內容 程式執行結束 web伺服器接收內容 返回給使用者 由於每次使用者請求,都得fork建立程序呼叫一次程式,然後銷毀程序,所以效能較低...
PHP中PHP SAPI常見的四種執行模式
伺服器應用程式程式設計介面,即php與其他應用互動的介面,php指令碼要執行有很多方式,通過web伺服器,或者直接在命令列下,也可以嵌入在其他程式中。sapi提供了乙個和外部通訊的介面,常見的sapi有 cgi fast cgi cli apache模組的dll isapi cgicgi 即通用閘道...