欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

PHP register_shutdown_function函數(shù)的深入解析

 更新時間:2013年06月03日 17:18:20   作者:  
本篇文章是對PHP register_shutdown_function函數(shù)進行了詳細的分析介紹,需要的朋友參考下
腳本時常死掉,而且并不總是那么好看. 我們可不想給用戶顯示一個致命錯誤,又或者一個空白頁(在display_errors設為off的情況下) . PHP中有一個叫做  register_shutdown_function 的函數(shù),可以讓我們設置一個當執(zhí)行關閉時可以被調(diào)用的另一個函數(shù).也就是說當我們的腳本執(zhí)行完成或意外死掉導致PHP執(zhí)行即將關閉時,我們的這個函數(shù)將會 被調(diào)用.所以,我們可以使用在腳本開始處設置一個變量為false,然后在腳本末尾將之設置為true的方法,讓PHP關閉回調(diào)函數(shù)檢查腳本完成與否. 如果我們的變量仍舊是false,我們就知道腳本的最后一行沒有執(zhí)行,因此它肯定在程序執(zhí)行到某處死掉了.我準備了一個非?;镜睦?可以演示在一個致 命錯誤需要顯示時,你應該怎么給用戶一些合適的反饋.你可以通過關閉致命錯誤的顯示(譯注:可以設置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;
?>

正如你所看到,如果關閉回調(diào)函數(shù)運行時,clean變量沒有被設為true,shutdown_func函數(shù)將會打印出一些東西.這個東西可以包裝成一個類(不使用全局變量).
PHP提供register_shutdown_function()這個函數(shù),能夠在腳本終止前回調(diào)注冊的函數(shù),也就是當 PHP 程序執(zhí)行完成后執(zhí)行的函數(shù)。
register_shutdown_function 執(zhí)行機制是:PHP把要調(diào)用的函數(shù)調(diào)入內(nèi)存。當頁面所有PHP語句都執(zhí)行完成時,再調(diào)用此 函數(shù)。注意,在這個時候從內(nèi)存中調(diào)用,不是從PHP頁面中調(diào)用,所以上面的例子不能使用相對路徑,因為PHP已經(jīng)當原來的頁面不存在了。就沒有什么相對路 徑可言。
注意:register_shutdown_function 是指在執(zhí)行完所有PHP語句后再調(diào)用函數(shù),不要理解成客戶端關閉流瀏覽器頁面時調(diào)用函數(shù)。
可以這樣理解調(diào)用條件:
1、當頁面被用戶強制停止時
2、當程序代碼運行超時時
3、當PHP代碼執(zhí)行完成時,代碼執(zhí)行存在異常和錯誤、警告

相關文章

最新評論