PHP錯誤處理常式

2020-07-16 10:05:47

當程式線上上執行時,如果遇到BUG,想不在前端輸出錯誤資訊,同時能及時郵件通知開發者,register_shutdown_function函數就可以派上用場了。

註冊一個會在指令碼執行完成或者 exit() 後被呼叫的函數。

可以多次呼叫register_shutdown_function(),這些被註冊的回撥會按照他們註冊時的順序被依次呼叫。 如果你在註冊的方法內部呼叫 exit(), 那麼所有處理會被中止,並且其他註冊的中止回撥也不會再被呼叫。

register_shutdown_function函數,當我們的指令碼執行完成或意外死掉導致PHP執行即將關閉時,我們的這個函數將會 被呼叫,可以配合 error_get_last 使用,獲取錯誤資訊。

register_shutdown_function ( callable $callback [, mixed $parameter [, mixed $... ]] )

callable 回撥函數

parameter可以通過傳入額外的引數來將引數傳給中止函數。

DEMO1:

//關閉錯誤報告
error_reporting(0);
//實現自己的錯誤資訊展示
register_shutdown_function(‘myShutdown‘);
$debug = true;
function myShutdown() {
 global $debug;
 // 無論錯誤是否發生,這句都會執行
 echo ‘ERROR‘ , ‘<br/>‘;
 if (!$debug) {
   $error = error_get_last();
   // todo 可以在這裡做郵件傳送提醒 或 錯誤紀錄檔收集
   var_export($error);
 }
}

DEMO2:

// 回到函數帶引數:記錄當前請求URL
$current_page = htmlspecialchars($_SERVER[‘SCRIPT_NAME‘], ENT_QUOTES, ‘UTF-8‘);
$current_page .= $_SERVER[‘QUERY_STRING‘] ? ‘?‘.htmlspecialchars($_SERVER[‘QUERY_STRING‘], ENT_QUOTES, ‘UTF-8‘) : ‘‘;
register_shutdown_function(function ($current_page) {
 //todo send email or log
}, $current_page);
error_get_last() 
//錯誤資訊檢視:http://php.net/manual/zh/errorfunc.constants.php

推薦教學:PHP視訊教學

以上就是PHP錯誤處理常式的詳細內容,更多請關注TW511.COM其它相關文章!