這篇文章帶給大家的內容是關於PHP中的SAPI是什麼?如何實現? (圖文),有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。
SAPI,特意去查了一下,它是 Server Application Programming Interface 的縮寫,意思是伺服器端應用程式介面。
這是 PHP 核心提供給外部呼叫其服務的接口,即外部系統可以透過 SAPI 來呼叫 PHP 提供的編譯腳本、執行腳本的服務。 PHP 實現的 SAPI 有很多,Cli、Fpm 是我們比較常見的。
圖片來自網路
接下來主要是討論下我們常見的Cli、和Fpm 是如何運作的。
Cli(Command Line Interface),即命令列接口,用於在命令行下執行PHP 腳本,就像Shell 那樣,它是執行PHP腳本最簡單的一種方式。
Cli 是單一進程模式,處理完請求後就直接關閉了,生命週期先後經歷module startup、request startup、execute script、request shutdown、module shutdown,其執行流程比較簡單,關鍵的處理過程如下:
main()-> php_cli_startup()-> do_cli()-> php_module_shutdown()
Fpm(FastCGI Process Manager)是PHP FastCGI 運作模式的一個行程管理器,從它的定義可以看出,Fpm的核心功能就是行程管理。
FastCGI 是 Web 伺服器(如Nginx、Apache)和處理程序之間的一種通訊協議,它是與HTTP類似的一種應用層通訊協定。
注意:它只是一種協定!
Fpm 是一種多進程模型,它由一個 master 進程和多個 worker 進程組成。 master 行程啟動時會建立一個 socket,但不會接收、處理請求,而是由 fork 出的 worker 子程序完成請求的接收及處理。即 master 進程管理 worker 進程,而 worker 進程才是真正的處理請求。
Fpm 在啟動後首先會進行 SAPI 的註冊操作;接著會進入 PHP 生命週期的 module startup
階段,在這個階段會呼叫各個擴充定義的 MINT 鉤子函數。然後會進行一系列的初始化操作,最後 master、worker 進程進入不同的處理環節。
worder 流程的生命週期如下圖:
#圖片來自網路
##其生命週期主要經歷這幾個階段:等待請求、解析請求、請求初始化、執行PHP 腳本、關閉請求。 master 流程主要透過三種不同的方式來管理 worder 流程,分別是靜態模式(static)、動態模式(dynamic)、按需模式(ondemand)。具體要使用哪種模式可以在conf配置中透過pm指定以上是PHP中的SAPI是什麼?如何實現? (圖文)的詳細內容。更多資訊請關注PHP中文網其他相關文章!