PHP中PHP SAPI常見的四種執行模式

2021-10-04 21:48:55 字數 1257 閱讀 3646

伺服器應用程式程式設計介面,即php與其他應用互動的介面,php指令碼要執行有很多方式,通過web伺服器,或者直接在命令列下,也可以嵌入在其他程式中。

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:

在模組化(dll)中,php是與web伺服器一起啟動並執行(是apache在cgi的基礎上進行的一種擴充套件,加快php的執行效率)

PHP常見的四種執行模式 SAPI

sapi提供了乙個和外部通訊的介面,常見的sapi有 cgi fast cgi cli apache模組的dll isapi cgi 即通用閘道器介面 commom gateway inte ce 它把網頁和web伺服器中的執行程式連線起來,把從html接收的指令傳遞給伺服器的執行程式,再把伺服器執...

四種常見的陣列排序方法(php實現)

一 名稱 氣泡排序 選擇排序 插入排序 快速排序 二 實現 冒泡 function bubblesort array a return a 選擇排序 function selectsort array a if p i return a 插入排序 function insertsort array ...

用php實現四種常見的排序演算法

幾種常見的排序 排序是乙個程式設計師的基本功,對於初級phper,更是可以通過排序演算法來鍛鍊自己的思維能力。所謂排序,就是對一組資料,按照某個順序排列的過程。下面就總結四種常用的php排序演算法,分別是氣泡排序,選擇排序,插入排序以及快速排序。一,氣泡排序 bubble sort 在幾種排序中,個...