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