色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

php執行的生命周期是怎樣的?

林玟書2年前9瀏覽0評論

PHP的執行分三個階段:

處理請求的開始階段、處理請求階段、請求之后的結束階段。

處理請求的開始階段:

1模塊初始化階段(MINIT),在整個SAPI生命周期內(例如Apache啟動以后的整個生命周期內或者命令行程序整個執行過程中),該過程只進行一次。(這應該就是為何修改了php.ini之后,要重啟Apache的原因);

PHP_MINIT_FUNCTION(extension_name){

/*Initializefunctions,classesetc*/

}

2請求初始化階段(RINIT),該過程發生在請求階段,例如通過url請求某個頁面,則在每次請求之前都會進行模塊激活。(為何不先激活呢?因為方便模塊在RINIT階段針對各種請求設置環境變量或其他的操作);

PHP_RINIT_FUNCTION(extension_name){

/*Initializesessionvariables,pre-populatevariables,redefineglobalvariablesetc*/

}

處理請求階段:

1詞法分析:將php文件翻譯成一個個的token;

2語法分析:根據生成的token和語法規則進行分析;

3Zend引擎:將代碼編譯為opcode后并執行,在執行的過程中還會重復進行編譯-執行,例如執行了include語句(為何不在第一次編譯就把這些包含進來的文件也一起編譯好?);

4調用SAPI的輸出函數返回執行結果。

處理請求的結束階段:

1關閉請求:RSHUTDOWN對應于RINIT,釋放資源等操作

2關閉模塊:MSHUTDOWN對應于MINIT,SAPI生命周期結束(Web服務器退出或者命令行腳本執行完畢退出)

PHP_RSHUTDOWN_FUNCTION(extension_name){

/*Domemorymanagement,unsetallvariablesusedinthelastPHPcalletc*/

}

PHP_MSHUTDOWN_FUNCTION(extension_name){

/*Freehandlersandpersistentmemoryetc*/

}