PHP bắt lỗi mức FATAL
Tài liệu tham khảo chính thức
Trang web chính thức set_error_handler register_shutdown_functionLàm thế nào để bắt tất cả các lỗi một cách hoàn hảo
set_error_handler có thể được sử dụng để nắm bắt hầu hết các loại lỗi. Khi gặp lỗi mức FATAL, do PHP trực tiếp chấm dứt hoạt động, nên không thể kích hoạt hàm gọi lại do set_error_handler đặt. Tại thời điểm này, chúng ta cần sử dụng register_shutdown_ Chức năng để đặt chức năng gọi lại kết thúc chương trình. Cần lưu ý rằng lệnh gọi lại được đặt bởi register_shutdown_ Chức năng được thực thi sau khi chương trình bị kết thúc, bất kể có lỗi trong quá trình này hay không. Vì vậy, trong lần gọi lại này, chúng ta cũng cần xác định xem có lỗi xảy ra hay không, và nếu có lỗi xảy ra thì chúng ta sẽ ghi lại vào nhật ký. Để biết chi tiết, vui lòng tham khảo mã sau.
set_error_handler('exception_handler');
register_shutdown_function('shutdown_handler');
function exception_handler($err_no, $err_str, $err_file, $err_line)
{
error_reporting(0);
// save error log
// ...
error_reporting(E_ALL);
}
function shutdown_handler()
{
$error = error_get_last();
if (empty($error)) {
return;
}
error_reporting(0);
// save error log
// ...
error_reporting(E_ALL);
}