PHP zachytáva chyby na úrovni FATAL
Úradný odkaz
Oficiálna web stránka set_error_handler register_shutdown_functionAko dokonale zachytiť všetky chyby
set_error_handler možno použiť na zachytenie väčšiny typov chýb. Ak dôjde k chybe na úrovni FATAL, pretože PHP operáciu priamo ukončí, nie je možné spustiť funkciu spätného volania nastavenú set_error_handler. V tejto chvíli musíme použiť register_shutdown_function na nastavenie funkcie spätného volania na ukončenie programu. Je potrebné poznamenať, že spätné volanie nastavené pomocou register_shutdown_function sa vykoná po ukončení programu, bez ohľadu na to, či v procese došlo k chybe. Takže v tomto spätnom volaní musíme tiež určiť, či došlo k chybe, a ak k chybe došlo, zaznamenáme ju do denníka. Podrobnosti nájdete v nasledujúcom kóde.
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);
}