PHP 生命週期

2020-07-16 10:06:07
PHP的架構圖

c53bcd7801b4f09121e0a3c2dcb572d.png

SAPI

SAPI(Server Application Programming Interfac) is an application programming interface (API) provided by the web server to help other developers in extending the web server capabilities.

SAPI是一個用來幫助其他開發程式擴充套件web伺服器功能的應用程式介面(api)。它將外部條件抽象, 為內部的PHP提供一套固定統一的介面, 使得PHP自身實現能夠不受外部環境影響,保持一定的獨立性。

PHP中常用的SAPI有cli(命令列模式,單進程)、php-fpm、CGI、Apache...

有點像策略模式,使用相同的介面,但是實現會略有不同。

378384fa67506dcded460dfdf9b1bb4.png

PHP的啟動和終止

● 請求之前的開始階段:

MINIT:模組初始化階段。初始化一些擴充套件、常數、類、資源等所有被php指令碼用到的東西。(常駐記憶體,可以被所有請求使用。)

PRINT:模組啟用階段。PHP會呼叫所有模組的RINIT函數,在這個階段各個模組也可以執行一些相關的操作,比如初始化本次請求使用到的變數。

● 請求之後的結束階段:

RSHUTDOWN:這個頁面請求執行完畢,或者被使用者給die(exit)了, 這時PHP會啟動回收程式,回收本次請求使用的資源。這次會執行所有已載入擴充套件的RSHUTDOWN(俗稱Request Shutdown)方法, 這時候擴充套件可以利用核心中的變數表等做的一些事情。因為PHP一旦把所有擴充套件的RSHUTDOWN方法執行完,便會釋放掉這次請求使用過的所有資源,比如變數表的所有變數、所有在這次請求中申請的記憶體等。

MSHUTDOWN:PHP執行所有擴充套件的MSHUTDOWN,釋放資源。

PHP的生命週期

1.單進程SAPI生命週期(CLI/CGI)

63ad96451aef853dca594cbfe59a31f.png

2.多進程SAPI生命週期(Apache2)

a1f8e1a802d9355d1c7edc7523b9eb7.png

3.多執行緒的SAPI生命週期

973ea988fbf818f79c3b6be5cfdefe6.png

4.Embed

Embed SAPI是一種比較特殊的sapi,容許你在C/C++語言中呼叫PHP/ZE提供的函數。

綜述

理一下PHP的生命週期,以及PHP整個執行過程。還有怎麼通過SAPI和PHP模組溝通.

以上就是PHP 生命週期的詳細內容,更多請關注TW511.COM其它相關文章!