国产成人精品亚洲777人妖,欧美日韩精品一区视频,最新亚洲国产,国产乱码精品一区二区亚洲

您的位置:首頁技術(shù)文章
文章詳情頁

PHP內(nèi)核探索 —— 一次請求的開始與結(jié)束:MINIT和RINIT、RSHUTDOWN和MSHUTDOWN

瀏覽:18日期:2022-09-16 11:08:22

PHP開始執(zhí)行以后會經(jīng)過兩個主要的階段:

處理請求之前的開始階段請求之后的結(jié)束階段

開始階段有兩個過程:

第一個過程是模塊初始化階段(MINIT), 在整個SAPI生命周期內(nèi)(例如Apache啟動以后的整個生命周期內(nèi)或者命令行程序整個執(zhí)行過程中), 該過程只進行一次。

第二個過程是模塊激活階段(RINIT),該過程發(fā)生在請求階段, 例如通過url請求某個頁面,則在每次請求之前都會進行模塊激活(RINIT請求開始)。 例如PHP注冊了一些擴展模塊,則在MINIT階段會回調(diào)所有模塊的MINIT函數(shù)。 模塊在這個階段可以進行一些初始化工作,例如注冊常量,定義模塊使用的類等等。

模塊在實現(xiàn)時可以通過如下宏來實現(xiàn)這些回調(diào)函數(shù):

PHP_MINIT_FUNCTION(myphpextension){ // 注冊常量或者類等初始化操作 return SUCCESS; }

請求到達之后PHP初始化執(zhí)行腳本的基本環(huán)境,例如創(chuàng)建一個執(zhí)行環(huán)境,包括保存PHP運行過程中變量名稱和值內(nèi)容的符號表, 以及當前所有的函數(shù)以及類等信息的符號表。然后PHP會調(diào)用所有模塊的RINIT函數(shù), 在這個階段各個模塊也可以執(zhí)行一些相關(guān)的操作,模塊的RINIT函數(shù)和MINIT回調(diào)函數(shù)類似:

PHP_RINIT_FUNCTION(myphpextension){ // 例如記錄請求開始時間 // 隨后在請求結(jié)束的時候記錄結(jié)束時間。這樣我們就能夠記錄下處理請求所花費的時間了 return SUCCESS; }

請求處理完后就進入了結(jié)束階段,一般腳本執(zhí)行到末尾或者通過調(diào)用exit()或die()函數(shù), PHP都將進入結(jié)束階段。和開始階段對應(yīng),結(jié)束階段也分為兩個環(huán)節(jié),一個在請求結(jié)束后停用模塊(RSHUTDOWN,對應(yīng)RINIT), 一個在SAPI生命周期結(jié)束(Web服務(wù)器退出或者命令行腳本執(zhí)行完畢退出)時關(guān)閉模塊(MSHUTDOWN,對應(yīng)MINIT)。

PHP_RSHUTDOWN_FUNCTION(myphpextension){ // 例如記錄請求結(jié)束時間,并把相應(yīng)的信息寫入到日至文件中。 return SUCCESS; }

標簽: PHP
相關(guān)文章:
主站蜘蛛池模板: 安溪县| 甘南县| 建水县| 长岛县| 皋兰县| 峨眉山市| 奇台县| 宜丰县| 湘潭市| 鹤壁市| 明水县| 鸡东县| 昌黎县| 西乌珠穆沁旗| 皋兰县| 乌兰浩特市| 万年县| 咸阳市| 望谟县| 廊坊市| 剑阁县| 东乌珠穆沁旗| 吉林省| 拜泉县| 尚义县| 邢台市| 宝坻区| 佛学| 安平县| 宾阳县| 泰顺县| 原平市| 腾冲县| 台前县| 中方县| 论坛| 通山县| 彩票| 安图县| 大埔县| 清河县|