PHP 的 SAPI 是個什麼東西

2021-09-13 09:49:42 字數 1565 閱讀 3103

這是 php 核心提供給外部呼叫其服務的介面,即外部系統可以通過 sapi 來呼叫 php 提供的編譯指令碼、執行指令碼的服務。php 中實現的 sapi 有很多,clifpm是我們比較常見的。

從下圖可以較為清晰的理解外部系統是如何通過 sapi 呼叫 php 服務的

**於網路

接下來主要是討論下我們常見的cli、和fpm是如何工作的。

clicli(command line inte***ce),即命令列介面,用於在命令列下執行 php 指令碼,就像 shell 那樣,它是執行 php 指令碼最簡便的一種方式。

cli 是單程序模式,處理完請求後就直接關閉了,生命週期先後經歷module startuprequest startupexecute scriptrequest shutdownmodule shutdown,其執行流程比較簡單,關鍵的處理過程如下:

main()-> php_cli_startup()-> do_cli()-> php_module_shutdown()
fpm

fpm(fastcgi process manager)是 phpfastcgi執行模式的乙個程序管理器,從它的定義可以看出,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指定。

是什麼東西 金錢是個什麼東西?

多數人看到大筆錢都會有一種莫名的興奮,為什麼會興奮呢?因為足夠的金錢能換來自己想要的東西,錢刺激著你的每根神經和細胞,你會控制不住地興奮。錢是個什麼東西?錢是所有物質的替代品,包括房子 車子 愛情 性 健康 未來。只要你方法得當,足夠的金錢可以交換幾乎所有想要的東西。錢是虛幻的。錢可以作為大多數人追...

記憶體是個什麼東西

記憶體,或記憶體儲器,又稱為主儲存器,是關係到計算機執行效能高低的關鍵部件之一,無疑是非常重要的。為了加快系統的速度,提高系統的整體效能,我們看到,計算機中配置的記憶體數量越來越大,而記憶體的種類也越來越多。記憶體是主機板上重要的部件之一,它是儲存cpu與外圍裝置溝通的資料與程式的部件。在主機中,記...

Cloudera是個什麼東西

有人說cloudera和hadoop的關係就如,ubuntu和linux的關係。而cloudera也正是想成為hadoop的發行版的提供者,實際應用的主導者。眾所周知,hadoop需要在集群上配置 安裝,在使用過程中還需要我們的管理。hadoop安裝 部署 管理的難度非常大,這使用很多使用者對had...