php幾種執行模式總結

2021-07-11 23:16:26 字數 1670 閱讀 8236

php一共分為五大執行模式:包括cgi 、fast-cgi、cli、isapi、apache 模組的 dllcgi

1、cgi

cgi即通用閘道器介面(common gateway inte***ce),它是一段程式,通俗的講cgi就象是一座橋,把網頁和web伺服器中的執行程式連線起來,它把html接收的指令傳遞給伺服器的執 行程式,再把伺服器執行程式的結果返還給html頁。cgi 的跨平台效能極佳,幾乎可以在任何作業系統上實現。

cgi方式在遇到連線請求(使用者 請求)先要建立cgi的子程序,啟用乙個cgi程序,然後處理請求,處理完後結束這個子程序。這就是fork-and-execute模式。所以用cgi 方式的伺服器有多少連線請求就會有多少cgi子程序,子程序反覆載入是cgi效能低下的主要原因。都會當使用者請求數量非常多時,會大量擠占系統的資源如內 存,cpu時間等,造成效能低下。

2、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請求之後並不立即退出,而是停留在計 算機中等待下次請求。對於客戶瀏覽器的請求反應更快,效能較高。

3、isapi:

乙個isapi的dll,可以在被使用者請求啟用後長駐記憶體,等待使用者的另乙個請求,還可以在乙個dll裡設定多個使用者請求處理函式,此外,

isapi的dll應用程式和www伺服器處於同乙個程序中,效率要顯著高於cgi。(由於微軟的排他性,只能執行於windows環境)

4、cli:

cli是php的命令列執行模式。

5、apache模組的dll:

該執行模式是我們以前在windows環境下使用apache伺服器經常使用的,而在模組化(dll)中,php是與web伺服器一起啟動並執行的。(是apache在cgi的基礎上進行的一種擴充套件,加快php的執行效率)

PHP的幾種執行模式

php一共分為五大執行模式 包括cgi fast cgi cli isapi apache 模組的 dll cgicgi即通用閘道器介面 common gateway inte ce 它是一段程式,通俗的講cgi就象是一座橋,把網頁和web伺服器中的執行程式連線起來,它把html接收的指令傳遞給伺服...

PHP中的幾種執行模式

workerman 程式需要在php cli模式下執行,也就是命令列模式,這塊我們有必要了解一下。fastcgi程序管理器自身初始化,啟動多個cgi直譯器程序並等待來自web server的連線 當客戶端請求到達web server時,fastcgi程序管理器選擇並連線到乙個cgi直譯器。web s...

MapReduce幾種執行模式

1 在eclipse中開發好mr程式 windows或linux下都可以 然後打成jar包 wc.jar 上傳到伺服器 執行命令 hadoop jar wc.jar cn.itheima.hadoop.mainclassrunner 2 在linux的eclipse中直接啟動runner類的main...