亚洲欧美日韩综合系列在线_91精品人妻一区二区_欧美大肥婆一级特大AA片_九色91视频免费观看_亚洲综合国产精品_av中文字幕在线不卡_久久精品色综合网_看黄色视频的软件_无卡无码高清中文字幕码2024_亚洲欧美日韩天堂网

PHP中的SAPI是什么?如何實(shí)現(xiàn)?(圖文)

來源:不言 發(fā)布時(shí)間:2018-09-18 15:25:26 閱讀量:667

本篇文章給大家?guī)淼膬?nèi)容是關(guān)于PHP中的SAPI是什么?如何實(shí)現(xiàn)?(圖文),有一定的參考價(jià)值,有需要的朋友可以參考一下,希望對(duì)你有所幫助。

SAPI,特意去查了一下,它是 Server Application Programming Interface 的首字母縮寫,意思是服務(wù)器端應(yīng)用編程接口。

這是 PHP 內(nèi)核提供給外部調(diào)用其服務(wù)的接口,即外部系統(tǒng)可以通過 SAPI 來調(diào)用 PHP 提供的編譯腳本、執(zhí)行腳本的服務(wù)。PHP 中實(shí)現(xiàn)的 SAPI 有很多,Cli、Fpm 是我們比較常見的。

從下圖可以較為清晰的理解外部系統(tǒng)是如何通過 SAPI 調(diào)用 PHP 服務(wù)的

1195855007-5b9fcab3e5285_articlex.jpg

圖片來源于網(wǎng)絡(luò)

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

Cli

Cli(Command Line Interface),即命令行接口,用于在命令行下執(zhí)行 PHP 腳本,就像 Shell 那樣,它是執(zhí)行 PHP 腳本最簡(jiǎn)便的一種方式。

Cli 是單進(jìn)程模式,處理完請(qǐng)求后就直接關(guān)閉了,生命周期先后經(jīng)歷 module startup、request startup、execute script、request shutdown、module shutdown,其執(zhí)行流程比較簡(jiǎn)單,關(guān)鍵的處理過程如下:

1
main()-> php_cli_startup()-> do_cli()-> php_module_shutdown()
Fpm

Fpm(FastCGI Process Manager)是 PHP FastCGI 運(yùn)行模式的一個(gè)進(jìn)程管理器,從它的定義可以看出,F(xiàn)pm的核心功能是進(jìn)程管理。

FastCGI 是 Web 服務(wù)器(如Nginx、Apache)和處理程序之間的一種通信協(xié)議,它是與HTTP類似的一種應(yīng)用層通信協(xié)議。 
注意:它只是一種協(xié)議!

Fpm 是一種多進(jìn)程模型,它由一個(gè) master 進(jìn)程和多個(gè) worker 進(jìn)程組成。master 進(jìn)程啟動(dòng)時(shí)會(huì)創(chuàng)建一個(gè) socket,但是不會(huì)接收、處理請(qǐng)求,而是由 fork 出的 worker 子進(jìn)程完成請(qǐng)求的接收及處理。即 master 進(jìn)程管理 worker 進(jìn)程,而 worker 進(jìn)程才是真正的處理請(qǐng)求。

Fpm 在啟動(dòng)后首先會(huì)進(jìn)行 SAPI 的注冊(cè)操作;接著會(huì)進(jìn)入 PHP 生命周期的 module startup 階段,在這個(gè)階段會(huì)調(diào)用各個(gè)擴(kuò)展定義的 MINT 鉤子函數(shù)。然后會(huì)進(jìn)行一系列的初始化操作,最后 master、worker 進(jìn)程進(jìn)入不同的處理環(huán)節(jié)。

worder 進(jìn)程的生命周期如下圖:

3952135648-5b9fcab409600_articlex.jpg

圖片來源于網(wǎng)絡(luò)

其生命周期主要經(jīng)歷這幾個(gè)階段:等待請(qǐng)求、解析請(qǐng)求、請(qǐng)求初始化、執(zhí)行 PHP 腳本、關(guān)閉請(qǐng)求。

master 進(jìn)程主要通過三種不同的方式來管理 worder 進(jìn)程,分別是靜態(tài)模式(static)、動(dòng)態(tài)模式(dynamic)、按需模式(ondemand)。具體要使用哪種模式可以在conf配置中通過pm指定


標(biāo)簽: PHP
分享:
評(píng)論:
你還沒有登錄,請(qǐng)先