PHP底層探索(二):一次請求的開始與結束

PHP開始執行以後會經過兩個主要階段:
1.處理請求之前的開始階段
2.請求之後的結束階段

開始階段有兩個過程:
1)過程是模塊初始化階段(MINIT),在整個SAPI聲明週期內,該過程只執行一次.
2)過程是模塊激活階段(RINIT),該過程發生在請求階段,例如請求某頁面,則在每次請求之前都會進行模塊激活(RINIT請求開始).例如PHP註冊了一些擴展模塊,則在MITIT階段會回調所有模塊的初始化函數.模塊在這個階段可以進行一些初始化工作,例如註冊常量,定義模塊使用的類等等.

模塊在是顯示可以通過PHP_MINIT_FUNCTION() 函數來返回註冊常量或類初始化操作

請求到達之後,PHP初始化執行腳本的基本環境, 例如創建一個執行環境,然後保存PHP運行過程中變量名稱和值內容的符號表,以及當前所有函數等.然後PHP會調用所有模塊的RINIT函數,在這個階段各個模塊也能執行一些相關操作,模塊的的RINIT函數與初始化回調(MINIT)函數類似: PHP_RINIT_FUNCTION

請求處理完成後就進入了結束階段,一般腳本執行到末尾或者通過調用exit()或die()函數,PHP都將進入結束階段.和開始階段對應,結束階段也分兩個環節
1,在請求結束後停用模塊(RSHUWDOWN 對應 RINIT)
2,在SAPI聲明週期結束時,關閉模塊(MSHUTDOWN,對應MINIT)
PHP_RSHUTDOWN_FUNCTION

具體流程如圖所示
這裏寫圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章