php一共分為五大執行模式:包括cgi 、fast-cgi、cli、isapi、apache 模組的 dll
cgicgi即通用閘道器介面(common gateway inte***ce),它是一段程式,通俗的講cgi就象是一座橋,把網頁和web伺服器中的執行程式連線起來,它把html接收的指令傳遞給伺服器的執 行程式,再把伺服器執行程式的結果返還給html頁。cgi 的跨平台效能極佳,幾乎可以在任何作業系統上實現。
cgi方式在遇到連線請求(使用者 請求)先要建立cgi的子程序,啟用乙個cgi程序,然後處理請求,處理完後結束這個子程序。這就是fork-and-execute模式。所以用cgi 方式的伺服器有多少連線請求就會有多少cgi子程序,子程序反覆載入是cgi效能低下的主要原因。都會當使用者請求數量非常多時,會大量擠占系統的資源如內 存,cpu時間等,造成效能低下。
cgi-fcgi
fast-cgi 是cgi的公升級版本,fastcgi像是乙個常駐(long-live)型的cgi,它可以一直執行著,只要啟用後,不會每次都要花費時間去fork一 次。php使用php-fpm(fastcgi process manager),全稱php fastcgi程序管理器進行管理。
fastcgi的工作原理
1、web server啟動時載入fastcgi程序管理器(iis isapi或apache module)
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程序管理器(執行在web server中)的下乙個連線。 在cgi模式中,php-cgi在此便退出了。
在上述情況中,你可以想象cgi通常有多慢。每乙個web 請求php都必須重新解析php.ini、重新載入全部擴充套件並重初始化全部資料結構。使用fastcgi,所有這些都只在程序啟動時發生一次。乙個額外的 好處是,持續資料庫連線(persistent database connection)可以工作。
apache2handler
php作為apache模組,apache伺服器在系統啟動後,預先生成多個程序副本駐留在記憶體中,一旦有請求出 現,就立即使用這些空餘的子程序進行處理,這樣就不存在生成子程序造成的延遲了。這些伺服器副本在處理完一次http請求之後並不立即退出,而是停留在計 算機中等待下次請求。對於客戶瀏覽器的請求反應更快,效能較高。
apache模組的dll:
該執行模式是我們以前在windows環境下使用apache伺服器經常使用的,而在模組化(dll)中,php是與web伺服器一起啟動並執行的。(是apache在cgi的基礎上進行的一種擴充套件,加快php的執行效率)
cli:
cli是php的命令列執行模式,大家經常會使用它,但是可能並沒有注意到(例如:我們在linux下經常使用 「php -m」查詢php安裝了那些擴充套件就是php命令列執行模式;有興趣的同學可以輸入php -h去深入研究該執行模式)
總結:每種執行模式都有自己的優缺點,沒有絕對的好與壞,主要是看大家處理何種環境.
PHP中的幾種執行模式
workerman 程式需要在php cli模式下執行,也就是命令列模式,這塊我們有必要了解一下。fastcgi程序管理器自身初始化,啟動多個cgi直譯器程序並等待來自web server的連線 當客戶端請求到達web server時,fastcgi程序管理器選擇並連線到乙個cgi直譯器。web s...
php幾種執行模式總結
php一共分為五大執行模式 包括cgi fast cgi cli isapi apache 模組的 dllcgi 1 cgi cgi即通用閘道器介面 common gateway inte ce 它是一段程式,通俗的講cgi就象是一座橋,把網頁和web伺服器中的執行程式連線起來,它把html接收的指...
PHP的幾種執行方式
前四種是提供給web伺服器來處理php 檔案,其中模組載入的方式其實是最快的的,但fastcgi配合nginx web服務是目前的主流,下面主要配合apache做說明。以模組載入的方式執行,其實就是將php整合到web伺服器,以同乙個程序執行。此執行模式在使用apache伺服器經常使用,通重載入模組...