摘要:的工作原理和生命周期是一門適用于開發(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底層的運行機制與原理
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/28541.html
摘要:應用實例所依賴的服務提供者可以在配置文件中的節(jié)點找到。完成所有服務提供者注冊到應用實例后,應用實例執(zhí)行啟動方法引導項目啟動?;騼?nèi)核接收到請求,加載服務提供者,同時,將請求分發(fā)給路由器執(zhí)行。 這是一篇翻譯文章,原文 Request Life Cycle of Laravel,譯文 Laravel 請求生命周期 首發(fā)于個人博客,轉(zhuǎn)載請注明出處。 當需要使用一個框架、工具或者服務時,在使用前...
摘要:的作用就是為了解決協(xié)議無狀態(tài)的缺陷所作的努力。的內(nèi)容主要包括名字,值,過期時間,路徑和域。這種生命期為瀏覽器會話期的被稱為會話。而機制采用的是一種在服務器端保持狀態(tài)的解決方案。中的有效期默認分鐘,也就是說,客戶端超過分鐘,當前就會失效。 會話控制是什么? cookie和session都是跟蹤整個會話過程的技術(shù)手段。而會話,就是用戶通過瀏覽器和服務器的一次通話。 為什么要有會話控制? 因...
閱讀 3865·2021-09-22 15:17
閱讀 2004·2021-09-22 14:59
閱讀 2414·2020-12-03 17:00
閱讀 3309·2019-08-30 15:55
閱讀 563·2019-08-30 11:23
閱讀 3560·2019-08-29 13:56
閱讀 582·2019-08-29 12:54
閱讀 2313·2019-08-29 12:49