您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關怎么捕獲php致命錯誤,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。
php捕獲致命錯誤的方法:可以利用register_shutdown_function()函數來捕獲致命錯誤。register_shutdown_function()函數表示PHP在程序結束時觸發某個函數行為。
利用register_shutdown_function()函數來捕獲致命錯誤,該函數表示 PHP 在程序結束時觸發某個函數行為。
語法:
void register_shutdown_function(callable $callback[, mixed $parameter [, mixed $... ]])
注冊一個 callback ,它會在腳本執行完成或者 exit() 后被調用。
參數:
callback:待注冊的中止回調
parameter:可以通過傳入額外的參數來將參數傳給中止函數
程序結束有四種情況:
php代碼執行過程中發生錯誤
php代碼順利執行成功
php代碼運行超時
頁面被用戶強制停止
舉例:
我們自定義一個行為:
<?php /** * Created by PhpStorm. * User: Xavier * Date: 2018/6/3 * Time: 12:16 */ class RegisterShutDownFunction { /** * @author Xavier * @desc php 程序運行結束時候需要運行的函數 */ public static function register() { if ($error = error_get_last()) { // $filename 必須是一個絕對路徑 if (!defined('REGISTER_SHUTDOWN_FUNCTION_LOG_FILENAME')) { $filename = dirname(__FILE__) . DIRECTORY_SEPARATOR . 'register_shutdown_function.log'; } else { $filename = REGISTER_SHUTDOWN_FUNCTION_LOG_FILENAME; } $message = '時間 : ' . date('Y-m-d H:i:s') . PHP_EOL; $message .= '文件 : ' . $error['file'] . PHP_EOL; $message .= '行數 : ' . $error['line'] . PHP_EOL; $message .= '錯誤 : ' . $error['message'] . PHP_EOL; $message .= '類型 : ' . $error['type'] . PHP_EOL . PHP_EOL; file_put_contents($filename, $message, FILE_APPEND); } } }
應用:
<?php /** * Created by PhpStorm. * User: Xavier * Date: 2018/6/3 * Time: 12:27 */ // 定義一個常量來記錄程序停止后,出現錯誤的 LOG 日志文件 define('REGISTER_SHUTDOWN_FUNCTION_LOG_FILENAME', dirname(__FILE__) . DIRECTORY_SEPARATOR . '11.log'); // 包含異常處理的類文件 include 'lib/RegisterShutDownFunction.php'; $registerShutDownFunction = new RegisterShutDownFunction(); // register_shutdown_function 函數必須在所有的程序執行之間注冊 register_shutdown_function(array($registerShutDownFunction, 'register')); // 注冊成功之后調用一個不存在的方法 aa(); aa();
錯誤日志:
時間 : 2018-06-03 04:56:02 文件 : /Users/x/www/php/exception/2.php 行數 : 17 錯誤 : Uncaught Error: Call to undefined function aa() in /Users/x/www/php/exception/2.php:17 Stack trace: #0 {main} thrown 類型 : 1
關于怎么捕獲php致命錯誤就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。