国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

PHP 的 SAPI 是個什么東西

venmos / 2168人閱讀

摘要:是服務器如和處理程序之間的一種通信協議,它是與類似的一種應用層通信協議。注意它只是一種協議是一種多進程模型,它由一個進程和多個進程組成。進程主要通過三種不同的方式來管理進程,分別是靜態模式動態模式按需模式。

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

這是 PHP 內核提供給外部調用其服務的接口,即外部系統可以通過 SAPI 來調用 PHP 提供的編譯腳本、執行腳本的服務。PHP 中實現的 SAPI 有很多,CliFpm 是我們比較常見的。

從下圖可以較為清晰的理解外部系統是如何通過 SAPI 調用 PHP 服務的

圖片來源于網絡

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

Cli

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

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

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

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指定。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/30902.html

相關文章

  • 深入了解SAPI

    摘要:將環境變量和標準輸入發送到子進程子進程完成處理后將標準輸出和錯誤信息從同一連接返回。當子進程關閉連接時,請求便告知處理完成。定義一個子進程最多處理的請求數,達到這個值,進程自動退出。 一、SAPI比較 1. SAPI 服務器應用程序編程接口,就是服務器與編程語言之間交互的接口。比如Linux命令行執行一段PHP代碼,其實是Linux shell通過PHP SAPI傳入一組參數,zend...

    CoderBear 評論0 收藏0
  • PHP 運行模式

    摘要:接下來會對其中五個比較常見的運行模式進行說明。模式是目前主流的服務運行模式,擁有高效可靠的性能,推薦大家使用。由于微軟的排他性,只能運行于環境。 SAPI 這里所說的 PHP 運行模式, 其實指的是 SAPI (Server Application Programming Interface,服務端應用編程端口 )。SAPI 為 PHP 提供了一個和外部通信的接口, PHP 就是通過這...

    OnlyMyRailgun 評論0 收藏0
  • PHP生命周期

    摘要:的啟動和終止請求之前的開始階段模塊初始化階段。的生命周期單進程生命周期多進程生命周期多線程的生命周期是一種比較特殊的,容許你在語言中調用提供的函數。不太了解,明天看一下綜述理一下的生命周期,以及整個執行過程。 PHP的架構圖 showImg(https://segmentfault.com/img/remote/1460000013321599?w=514&h=525); SAPI S...

    sf190404 評論0 收藏0
  • PHP7源碼分析】PHP中$_POST揭秘

    摘要:和進程的啟動過程類似,啟動過程有種進程角色啟動進程進程和進程。直到請求到來,將連接賦值給對象的字段。注當進程執行完后會再次調用函數,準備監聽新的請求。當讀取到的時,會調用函數對進行解析,將中的以及存儲到結構體中。 運營研發團隊 季偉濱 一、前言 前幾天的工作中,需要通過curl做一次接口測試。讓我意外的是,通過$_POST竟然無法獲取到Content-Type是application...

    sf190404 評論0 收藏0
  • PHP工作原理和生命周期

    摘要:的工作原理和生命周期是一門適用于開發的動態語言,它可以說是一個用語言實現的包含大量組件的軟件框架。無論是哪種公眾模式,的工作原理都是一樣的,都是作為一種運行。 PHP的工作原理和生命周期 php是一門適用于web開發的動態語言,它可以說是一個用C語言實現的包含大量組件的軟件框架。那么,php是如何工作的呢?它的生命周期是怎么樣的呢? 表層分析 php是以請求/響應為周期運行服務端應用...

    happyhuangjinjin 評論0 收藏0

發表評論

0條評論

venmos

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<