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