伺服器應用程式程式設計介面,即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 在幾種排序中,個...