国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > PHP > 正文

php中register_shutdown_function函數用法詳解

2020-03-22 19:52:06
字體:
來源:轉載
供稿:網友
  • php中register_shutdown_function函數用法詳解:

    由于程序出現一些不可預知的問題,給用戶顯示一個致命錯誤,又或者一個空白頁(在display_errors設為off的情況下),不是一個很好的處理方法 . PHP中有一個叫做 register_shutdown_function 的函數,可以讓我們設置一個當執行關閉時可以被調用的另一個函數.也就是說當我們的腳本執行完成或意外死掉導致PHP執行即將關閉時,我們的這個函數將會 被調用.所以,我們可以使用在腳本開始處設置一個變量為false,然后在腳本末尾將之設置為true的方法,讓PHP關閉回調函數檢查腳本完成與否. 如果我們的變量仍舊是false,我們就知道腳本的最后一行沒有執行,因此它肯定在程序執行到某處死掉了.我準備了一個非常基本的例子,可以演示在一個致 命錯誤需要顯示時,你應該怎么給用戶一些合適的反饋.你可以通過關閉致命錯誤的顯示(譯注:可以設置display_errors和 error_reporting),讓例子看起來好看些.

    <?php$clean = false;function shutdown_func(){global $clean;if (!$clean){die("not a clean shutdown");}return false;}register_shutdown_function("shutdown_func");$a = 1;$a = new FooClass(); // 將因為致命錯誤而失敗$clean = true;?>

    正如你所看到,如果關閉回調函數運行時,clean變量沒有被設為 true,shutdown_func函數將會打印出一些東西.這個東西可以包裝成一個類(不使用html' target='_blank'>全局變量).
    PHP提供register_shutdown_function()這個函數,能夠在腳本終止前回調注冊的函數,也就是當 PHP 程序執行完成后執行的函數。
    例子:

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312" /><title>register_shutdown_function示例</title></head><body><?php$starttime=microtime(true);function Test(){$starttime=microtime(true);if(!file_exists("Test.txt")) { //判斷如果文件不存在!!$Str = fopen("Test.txt","w+");fwrite($Str," 我是在最后寫進來的.時間:$starttime");fclose($Str);echo "創建完成!創建時間:$starttime";}else { //如果存在;echo "文件已經存在";}}register_shutdown_function("Test");echo "程序開始:".$starttime."<br>";for($i=0;$i<1000;$i++){echo "Echo<br/>";}exit;?></body></html>register_shutdown_function的作用是指定當本頁面所有腳本執行完成之后執行的函數。<?phpfunction aaa() {echo "創建文件";if($ttt = fopen("D:/web_root/tx.txt","w+"))   //此處要用絕對路徑,用相對路徑即無效。原因請看后面的解釋{fwrite($ttt,"you are write after exit");fclose($ttt);}}register_shutdown_function("aaa");   // 函數名稱無需帶括號,用引號包住即可。 當本頁面所有語句都執行完成,或者超時時aa函數。exit();?>

    register_shutdown_function 執行機制是:PHP把要調用的函數調入內存。當頁面所有PHP語句都執行完成時,再調用此 函數。注意,在這個時候從內存中調用,不是從php頁面中調用,所以上面的例子不能使用相對路徑,因為php已經當原來的頁面不存在了。就沒有什么相對路 徑可言。 www.it165.net
    注意:register_shutdown_function 是指在執行完所有PHP語句后再調用函數,不要理解成客戶端關閉流瀏覽器頁面時調用函數。
    可以這樣理解調用條件:
    1、當頁面被用戶強制停止時
    2、當程序代碼運行超時時
    3、當PHP代碼執行完成時

    PHP編程

    鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

  • 發表評論 共有條評論
    用戶名: 密碼:
    驗證碼: 匿名發表
    主站蜘蛛池模板: 贵州省| 安溪县| 盖州市| 衡水市| 四子王旗| 桂东县| 改则县| 若羌县| 惠来县| 大庆市| 大兴区| 揭西县| 三穗县| 台中市| 斗六市| 胶州市| 安徽省| 饶平县| 津南区| 濮阳市| 额尔古纳市| 柘荣县| 油尖旺区| 永定县| 若尔盖县| 霍林郭勒市| 镇宁| 金塔县| 彰武县| 华安县| 汉沽区| 南宫市| 林甸县| 务川| 武宣县| 玉山县| 洛隆县| 德兴市| 周宁县| 大安市| 桂东县|