摘要:的工作原理和生命周期是一門適用于開發的動態語言,它可以說是一個用語言實現的包含大量組件的軟件框架。無論是哪種公眾模式,的工作原理都是一樣的,都是作為一種運行。
PHP的工作原理和生命周期
php是一門適用于web開發的動態語言,它可以說是一個用C語言實現的包含大量組件的軟件框架。那么,php是如何工作的呢?它的生命周期是怎么樣的呢?
php是以請求/響應為周期運行服務端應用程序,當請求進入應用程序,流程如下:
php的每一個請求都會重復以上的交互。
php的運行模式有兩種:web模式和cli模式。無論是哪種公眾模式,php的工作原理都是一樣的,都是作為一種SAPI運行。首先,認識下SAPI,它是什么?
Sapi全稱是Server Application Programming Interface,也就是服務端應用編程接口,Sapi通過一系列鉤子函數,使得PHP可以和外圍交互數據,這是PHP非常優雅和成功的一個設計,通過sapi成功的將PHP本身和上層應用解耦隔離,PHP可以不再考慮如何針對不同應用進行兼容,而應用本身也可以針對自己的特點實現不同的處理方式。
常見的SAPI有cli、cgi、php-fpm以及各服務具體的sapi。
在php的生命周期中,有4個關鍵調用:
以nginx服務器為例,在web模式下,生命周期流程如下:
SAPI運行PHP都經過下面幾個階段:
1、模塊初始化階段(module init):
這個階段主要進行php框架、zend引擎的初始化操作。這個階段一般是在SAPI啟動時執行一次,對于FPM而言,就是在fpm的master進行啟動時執行的。php加載每個擴展的代碼并調用其模塊初始化例程(MINIT),進行一些模塊所需變量的申請,內存分配等。
2、請求初始化階段(request init):
當一個頁面請求發生時,在請求處理前都會經歷的一個階段。對于fpm而言,是在worker進程accept一個請求并讀取、解析完請求數據后的一個階段。在這個階段內,SAPI層將控制權交給PHP層,PHP初始化本次請求執行腳本所需的環境變量。
3、php腳本執行階段
php代碼解析執行的過程。Zend引擎接管控制權,將php腳本代碼編譯成opcodes并順次執行
4、請求結束階段(request shutdown):
請求處理完后就進入了結束階段,PHP就會啟動清理程序。這個階段,將flush輸出內容、發送http響應內容等,然后它會按順序調用各個模塊的RSHUTDOWN方法。 RSHUTDOWN用以清除程序運行時產生的符號表,也就是對每個變量調用unset函數。
5、模塊關閉階段(module shutdown):
該階段在SAPI關閉時執行,與模塊初始化階段對應,這個階段主要是進行資源的清理、php各模塊的關閉操作,同時,將回調各擴展的module shutdown鉤子函數。這是發生在所有請求都已經結束之后,例如關閉fpm的操作。(這個是對于CGI和CLI等SAPI,沒有“下一個請求”,所以SAPI立刻開始關閉。)
截圖于:PHP底層的運行機制與原理
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/28541.html
摘要:應用實例所依賴的服務提供者可以在配置文件中的節點找到。完成所有服務提供者注冊到應用實例后,應用實例執行啟動方法引導項目啟動。或內核接收到請求,加載服務提供者,同時,將請求分發給路由器執行。 這是一篇翻譯文章,原文 Request Life Cycle of Laravel,譯文 Laravel 請求生命周期 首發于個人博客,轉載請注明出處。 當需要使用一個框架、工具或者服務時,在使用前...
摘要:的作用就是為了解決協議無狀態的缺陷所作的努力。的內容主要包括名字,值,過期時間,路徑和域。這種生命期為瀏覽器會話期的被稱為會話。而機制采用的是一種在服務器端保持狀態的解決方案。中的有效期默認分鐘,也就是說,客戶端超過分鐘,當前就會失效。 會話控制是什么? cookie和session都是跟蹤整個會話過程的技術手段。而會話,就是用戶通過瀏覽器和服務器的一次通話。 為什么要有會話控制? 因...
閱讀 3762·2021-09-22 15:17
閱讀 1946·2021-09-22 14:59
閱讀 2346·2020-12-03 17:00
閱讀 3209·2019-08-30 15:55
閱讀 482·2019-08-30 11:23
閱讀 3487·2019-08-29 13:56
閱讀 518·2019-08-29 12:54
閱讀 2257·2019-08-29 12:49