摘要:結(jié)算處理順利運(yùn)行完文件用戶主動(dòng)致命回收程序釋放掉這次請(qǐng)求使用過的所有東西包括變量表的所有變量所有在這次請(qǐng)求中申請(qǐng)的內(nèi)存等等請(qǐng)確保文件可寫,否則會(huì)莫名崩潰讓我們看看是不是每次請(qǐng)求結(jié)束都會(huì)在這個(gè)文件里追加數(shù)據(jù)通知自己要的時(shí)候,便進(jìn)入俗稱階段。
/* * PHP生命周期 * PHP程序的啟動(dòng) * 前置初始化(Apache或Nginx相關(guān)操作) * 模塊初始化 對(duì)應(yīng)擴(kuò)展 php.dll * 請(qǐng)求初始化 $_SERVER等參數(shù) I * frame 執(zhí)行php腳本 code I I可以重復(fù)執(zhí)行(一般為框架內(nèi)容) * 請(qǐng)求處理完成 request I * 關(guān)閉模塊 close * * Apache: * A: php作為Apache的一個(gè)模塊的啟動(dòng)和終止. * 這次php會(huì)初始化一些必要的數(shù)據(jù)(PHP_MINIT_FUNCTION),比如和Apache有關(guān)的,這些數(shù)據(jù)時(shí)常駐內(nèi)存的!終止與之對(duì)應(yīng). * B: Apache分配一個(gè)頁面請(qǐng)求過來的時(shí)候,php會(huì)有一次啟動(dòng)和終止 * * PHP擴(kuò)展周期: * http://www.cunmou.com/phpbook/1.md * Module init、Request init、Request Shutdown、Module shutdown 四個(gè)過程 * 具體的執(zhí)行順序如下 */ // 這四個(gè)宏都是在walu.c里完成最終實(shí)現(xiàn)的,而他們的則是在/main/php.h里被定義的(其實(shí)也是調(diào)用的別的宏) // 這些代碼都在walu.c里面,不再.h里 php內(nèi)核代碼 //模塊初始化 前置初始化必要數(shù)據(jù) {擴(kuò)展(系統(tǒng)模塊),(常量,類,資源)(自定義)} int time_of_minit;//在MINIT中初始化,在每次頁面請(qǐng)求中輸出,看看是否變化 PHP_MINIT_FUNCTION(walu) { time_of_minit=time(NULL);//我們在MINIT啟動(dòng)中對(duì)他初始化 return SUCCESS; } //(啟動(dòng))當(dāng)一個(gè)頁面請(qǐng)求到來時(shí)候,PHP會(huì)打了雞血似的馬上開辟一個(gè)新的環(huán)境,并重新掃描自己的各個(gè)擴(kuò)展, //挨個(gè)執(zhí)行它們各自的RINIT方法(俗稱Request Initialization), //這時(shí)候一個(gè)擴(kuò)展可能會(huì)初始化自己擴(kuò)展使用的變量啊,初始化等會(huì)用戶端即PHP腳本中的變量啊之類的, //內(nèi)核預(yù)置了PHP_RINIT_FUNCTION()這個(gè)宏函數(shù)來幫我們實(shí)現(xiàn)這個(gè)功能: int time_of_rinit;//在RINIT里初始化,看看每次頁面請(qǐng)求的時(shí)候變不。 PHP_RINIT_FUNCTION(walu) { time_of_rinit=time(NULL); return SUCCESS; } //(結(jié)算)處理(順利運(yùn)行完文件,用戶主動(dòng)exit/die,致命error) //回收程序 //釋放掉這次請(qǐng)求使用過的所有東西:包括變量表的所有變量、所有在這次請(qǐng)求中申請(qǐng)的內(nèi)存等等 PHP_RSHUTDOWN_FUNCTION(walu) { FILE *fp=fopen("/cnan/www/erzha/time_rshutdown.txt","a+");//請(qǐng)確保文件可寫,否則apache會(huì)莫名崩潰 fprintf(fp,"%d ",time(NULL));//讓我們看看是不是每次請(qǐng)求結(jié)束都會(huì)在這個(gè)文件里追加數(shù)據(jù) fclose(fp); return SUCCESS; } //Apache通知PHP自己要Stop的時(shí)候,PHP便進(jìn)入MSHUTDOWN(俗稱Module Shutdown)階段。 //這時(shí)候PHP便會(huì)給所有擴(kuò)展下最后通喋,如果哪個(gè)擴(kuò)展還有未了的心愿,就放在自己MSHUTDOWN方法里 //這可是最后的機(jī)會(huì)了,一旦PHP把擴(kuò)展的MSHUTDOWN執(zhí)行完,便會(huì)進(jìn)入自毀程序, //這里一定要把自己擅自申請(qǐng)的內(nèi)存給釋放掉,否則就杯具了 PHP_MSHUTDOWN_FUNCTION(walu) { FILE *fp=fopen("/cnan/www/erzha/time_mshutdown.txt","a+");//請(qǐng)確保文件可寫,否則apache會(huì)莫名崩潰 fprintf(fp,"%d ",time(NULL)); return SUCCESS; } //我們在頁面里輸出time_of_minit和time_of_rinit的值 PHP_FUNCTION(walu_test) { php_printf("%d
",time_of_minit); php_printf("%d
",time_of_rinit); return; } # 線程安全與非線程安全 # web: http://www.cunmou.com/phpbook/1.4.md # TRSM (thread safe resource management) php抽象層,php多線程管理
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/31010.html
摘要:的工作原理和生命周期是一門適用于開發(fā)的動(dòng)態(tài)語言,它可以說是一個(gè)用語言實(shí)現(xiàn)的包含大量組件的軟件框架。無論是哪種公眾模式,的工作原理都是一樣的,都是作為一種運(yùn)行。 PHP的工作原理和生命周期 php是一門適用于web開發(fā)的動(dòng)態(tài)語言,它可以說是一個(gè)用C語言實(shí)現(xiàn)的包含大量組件的軟件框架。那么,php是如何工作的呢?它的生命周期是怎么樣的呢? 表層分析 php是以請(qǐng)求/響應(yīng)為周期運(yùn)行服務(wù)端應(yīng)用...
摘要:的整個(gè)生命周期被劃分為以下幾個(gè)階段模塊初始化階段請(qǐng)求初始化階段執(zhí)行腳本階段請(qǐng)求關(guān)閉階段模塊關(guān)閉階段。 PHP的整個(gè)生命周期被劃分為以下幾個(gè)階段:模塊初始化階段(module startup)、請(qǐng)求初始化階段(request startup)、執(zhí)行腳本階段(executescript)、請(qǐng)求關(guān)閉階段(request shutdown)、模塊關(guān)閉階段(module shutdown)。根據(jù)...
摘要:應(yīng)用實(shí)例所依賴的服務(wù)提供者可以在配置文件中的節(jié)點(diǎn)找到。完成所有服務(wù)提供者注冊到應(yīng)用實(shí)例后,應(yīng)用實(shí)例執(zhí)行啟動(dòng)方法引導(dǎo)項(xiàng)目啟動(dòng)。或內(nèi)核接收到請(qǐng)求,加載服務(wù)提供者,同時(shí),將請(qǐng)求分發(fā)給路由器執(zhí)行。 這是一篇翻譯文章,原文 Request Life Cycle of Laravel,譯文 Laravel 請(qǐng)求生命周期 首發(fā)于個(gè)人博客,轉(zhuǎn)載請(qǐng)注明出處。 當(dāng)需要使用一個(gè)框架、工具或者服務(wù)時(shí),在使用前...
閱讀 3079·2021-11-22 13:54
閱讀 3667·2021-11-16 11:44
閱讀 1445·2021-09-07 10:19
閱讀 1536·2019-08-29 17:30
閱讀 3252·2019-08-29 11:33
閱讀 3599·2019-08-26 12:18
閱讀 2944·2019-08-26 11:53
閱讀 1407·2019-08-26 10:47