php register_shutdown_function函數(shù)詳解
設(shè)定錯誤和異常處理三函數(shù)
register_shutdown_function(array(‘Debug','fatalError')); //定義PHP程序執(zhí)行完成后執(zhí)行的函數(shù) set_error_handler(array(‘Debug','appError')); // 設(shè)置一個用戶定義的錯誤處理函數(shù) set_exception_handler(array(‘Debug','appException')); //自定義異常處理。
功能:register_shutdown_function() 函數(shù)可實現(xiàn)當程序執(zhí)行完成后執(zhí)行的函數(shù),其功能為可實現(xiàn)程序執(zhí)行完成的后續(xù)操作。程序在運行的時候可能存在執(zhí)行超時,或強制關(guān)閉等情況,但這種情況下默認的提示是非常不友好的,如果使用register_shutdown_function()函數(shù)捕獲異常,就能提供更加友好的錯誤展示方式,同時可以實現(xiàn)一些功能的后續(xù)操作,如執(zhí)行完成后的臨時數(shù)據(jù)清理,包括臨時文件等。
可以這樣理解調(diào)用條件:
1、當頁面被用戶強制停止時
2、當程序代碼運行超時時
3、當PHP代碼執(zhí)行完成時,代碼執(zhí)行存在異常和錯誤、警告
example1:
<?php
function test() {
echo "test()";
}
register_shutdown_function("test");
echo "show: ";
//將輸出
show:test()
example2:
<?php
class ClassDemo {
public function __construct() {
register_shutdown_function(array($this, "f"));
}
public function f() {
echo "f()";
}
}
$demo = new ClassDemo();
echo "before </br>";
//將輸出
before
f()
example3:
<?php
function f($str) {
echo $str."<br>";
}
register_shutdown_function("f","hello");
class ClassDemo {
public function __construct() {
register_shutdown_function(array($this, "f"),"hello");
}
public function f($str) {
echo "f():".$str;
}
}
$demo = new ClassDemo();
echo "before </br>";
//將輸出
before
hello
f():hello
注意事項
1,register_shutdown_function()函數(shù)可重復(fù)調(diào)用,但執(zhí)行的順序與注冊的順序相同
2,如果在調(diào)用register_shutdown_function()函數(shù)之前有exit()函數(shù)調(diào)用,register_shutdown_function()函數(shù)將不能執(zhí)行
3,PHP4后支持注冊函數(shù)參數(shù)傳遞
4,在某些服務(wù)端,如Apache,當前目錄在register_shutdown_function()函數(shù)中能夠改變
5,register_shutdown_function()函數(shù)執(zhí)行在headers發(fā)送之后
- PHP register_shutdown_function函數(shù)的深入解析
- php ignore_user_abort與register_shutdown_function 使用方法
- PHP register_shutdown_function()函數(shù)的使用示例
- php中__destruct與register_shutdown_function執(zhí)行的先后順序問題
- PHP中使用register_shutdown_function函數(shù)截獲fatal error示例
- PHP錯誤處理函數(shù)register_shutdown_function使用示例
- PHP中register_shutdown_function函數(shù)的基礎(chǔ)介紹與用法詳解
相關(guān)文章
Javascript 阿拉伯數(shù)字轉(zhuǎn)化中國大寫數(shù)字的函數(shù)代碼
將阿拉伯數(shù)字轉(zhuǎn)化中國大寫數(shù)字的函數(shù)代碼,需要的朋友可以參考下。2010-04-04
滾動條響應(yīng)鼠標滑輪事件實現(xiàn)上下滾動的js代碼
javascript實現(xiàn)滾動條響應(yīng)鼠標滑輪的實現(xiàn)上下滾動,示例代碼如下2014-06-06
JavaScript自執(zhí)行函數(shù)和jQuery擴展方法詳解
這篇文章主要為大家詳細介紹了JavaScript自執(zhí)行函數(shù)和jQuery擴展方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-10-10
為JS擴展Array.prototype.indexOf引發(fā)的問題探討及解決
Array沒有indexOf方法,這樣在一個數(shù)組中查找某個元素的索引時比較麻煩,于是通過prototype原型擴展了Array.prototype.indexOf(),在對數(shù)組進行遍歷的時候卻出現(xiàn)了問題2013-04-04

