成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

PHP的工作原理和生命周期

happyhuangjinjin / 3324人閱讀

摘要:的工作原理和生命周期是一門適用于開發(fā)的動態(tài)語言,它可以說是一個用語言實現(xiàn)的包含大量組件的軟件框架。無論是哪種公眾模式,的工作原理都是一樣的,都是作為一種運行。

PHP的工作原理和生命周期

php是一門適用于web開發(fā)的動態(tài)語言,它可以說是一個用C語言實現(xiàn)的包含大量組件的軟件框架。那么,php是如何工作的呢?它的生命周期是怎么樣的呢?


表層分析

php是以請求/響應為周期運行服務端應用程序,當請求進入應用程序,流程如下:

php的每一個請求都會重復以上的交互。

底層分析

php的運行模式有兩種:web模式和cli模式。無論是哪種公眾模式,php的工作原理都是一樣的,都是作為一種SAPI運行。首先,認識下SAPI,它是什么?

Sapi全稱是Server Application Programming Interface,也就是服務端應用編程接口,Sapi通過一系列鉤子函數(shù),使得PHP可以和外圍交互數(shù)據(jù),這是PHP非常優(yōu)雅和成功的一個設計,通過sapi成功的將PHP本身和上層應用解耦隔離,PHP可以不再考慮如何針對不同應用進行兼容,而應用本身也可以針對自己的特點實現(xiàn)不同的處理方式。

常見的SAPI有cli、cgi、php-fpm以及各服務具體的sapi。
在php的生命周期中,有4個關鍵調(diào)用:

以nginx服務器為例,在web模式下,生命周期流程如下:

SAPI運行PHP都經(jīng)過下面幾個階段:
1、模塊初始化階段(module init):
這個階段主要進行php框架、zend引擎的初始化操作。這個階段一般是在SAPI啟動時執(zhí)行一次,對于FPM而言,就是在fpm的master進行啟動時執(zhí)行的。php加載每個擴展的代碼并調(diào)用其模塊初始化例程(MINIT),進行一些模塊所需變量的申請,內(nèi)存分配等。

2、請求初始化階段(request init):
當一個頁面請求發(fā)生時,在請求處理前都會經(jīng)歷的一個階段。對于fpm而言,是在worker進程accept一個請求并讀取、解析完請求數(shù)據(jù)后的一個階段。在這個階段內(nèi),SAPI層將控制權(quán)交給PHP層,PHP初始化本次請求執(zhí)行腳本所需的環(huán)境變量。

3、php腳本執(zhí)行階段
php代碼解析執(zhí)行的過程。Zend引擎接管控制權(quán),將php腳本代碼編譯成opcodes并順次執(zhí)行

4、請求結(jié)束階段(request shutdown):
請求處理完后就進入了結(jié)束階段,PHP就會啟動清理程序。這個階段,將flush輸出內(nèi)容、發(fā)送http響應內(nèi)容等,然后它會按順序調(diào)用各個模塊的RSHUTDOWN方法。 RSHUTDOWN用以清除程序運行時產(chǎn)生的符號表,也就是對每個變量調(diào)用unset函數(shù)。

5、模塊關閉階段(module shutdown):
該階段在SAPI關閉時執(zhí)行,與模塊初始化階段對應,這個階段主要是進行資源的清理、php各模塊的關閉操作,同時,將回調(diào)各擴展的module shutdown鉤子函數(shù)。這是發(fā)生在所有請求都已經(jīng)結(jié)束之后,例如關閉fpm的操作。(這個是對于CGI和CLI等SAPI,沒有“下一個請求”,所以SAPI立刻開始關閉。)

PHP的核心架構(gòu)圖

截圖于:PHP底層的運行機制與原理

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/28541.html

相關文章

  • Laravel 請求生命周期

    摘要:應用實例所依賴的服務提供者可以在配置文件中的節(jié)點找到。完成所有服務提供者注冊到應用實例后,應用實例執(zhí)行啟動方法引導項目啟動?;騼?nèi)核接收到請求,加載服務提供者,同時,將請求分發(fā)給路由器執(zhí)行。 這是一篇翻譯文章,原文 Request Life Cycle of Laravel,譯文 Laravel 請求生命周期 首發(fā)于個人博客,轉(zhuǎn)載請注明出處。 當需要使用一個框架、工具或者服務時,在使用前...

    junfeng777 評論0 收藏0
  • sessioncookie

    摘要:的作用就是為了解決協(xié)議無狀態(tài)的缺陷所作的努力。的內(nèi)容主要包括名字,值,過期時間,路徑和域。這種生命期為瀏覽器會話期的被稱為會話。而機制采用的是一種在服務器端保持狀態(tài)的解決方案。中的有效期默認分鐘,也就是說,客戶端超過分鐘,當前就會失效。 會話控制是什么? cookie和session都是跟蹤整個會話過程的技術(shù)手段。而會話,就是用戶通過瀏覽器和服務器的一次通話。 為什么要有會話控制? 因...

    ruicbAndroid 評論0 收藏0
  • 深入了解SAPI

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

    CoderBear 評論0 收藏0

發(fā)表評論

0條評論

happyhuangjinjin

|高級講師

TA的文章

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