sapi提供了乙個和外部通訊的介面,常見的sapi有:cgi、fast-cgi、cli、apache模組的dll、isapi
cgicgi 即通用閘道器介面(commom gateway inte***ce),它把網頁和web伺服器中的執行程式連線起來,把從html接收的指令傳遞給伺服器的執行程式,再把伺服器執行程式的結果返還給html頁。cgi的跨平台效能極佳,幾乎可以在任何作業系統上實現。
cgi方式在遇到連線請求先要建立cgi的子程序,啟用乙個cgi程序,然後處理請求,處理完後結束這個子程序。這就是fork-and-execute模式。所以用cgi方式的伺服器有多少連線請求就會有多少cgi子程序,子程序反覆載入是cgi效能低下的主要原因。都會當使用者請求數量非常多時,會大量擠占系統的資源如記憶體,cpu時間等,造成效能低下。
fastcgi
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,所有這些都只在程序啟動時發生一次。乙個額外的好處是,持續資料庫連線可以工作。
clicli 是php的命令執行模式(linux下 php -m 查詢php安裝了哪些擴充套件就是php命令列模式)
apache模組的dll:
PHP的五種執行模式
一 cgi 通用閘道器介面 1 cgi把網頁和web伺服器中的執行程式連線起來,它把html接收的指令傳遞給伺服器的執行程式,再把伺服器執行程式的結果返還給html頁。cgi 的跨平台效能極佳,幾乎可以在任何作業系統上實現。cgi已經是比較老的模式了,這幾年都很少用了。2 每有乙個使用者請求,都會先...
php的4種常見執行方式
這篇文章主要介紹了php的4種常見執行方式,本文講解了cgi fastcgi apache2handler cli等4種執行方式,需要的朋友可以參考下 1 cgi cgi即通用閘道器介面 common gatewag inte ce 它是一段程式,通俗的講cgi就象是一座橋,把網頁和web伺服器中的...
php執行四種模式
四種分別如下 簡答說明下 cli 就是命令列,例如可以在控制台或者是shell中鍵入命令 php f index.phpcgi 規定了php與web server交流的規則,相當於執行了response exec php f index.php url cookie fastcgi這個一般nginx...