PHP vangt FATAL-fouten op
Officiële referentie
Officiële website set_error_handler register_shutdown_functionHoe u alle fouten perfect kunt opvangen
set_error_handler kan worden gebruikt om de meeste fouttypen vast te leggen.Wanneer een FATAL-niveau fout wordt aangetroffen, omdat PHP de operatie direct beëindigt, kan de callback-functie die is ingesteld door set_error_handler niet worden geactiveerd. Op dit moment moeten we register_shutdown_function gebruiken om de callback-functie in te stellen voor het beëindigen van het programma. Opgemerkt moet worden dat de callback die is ingesteld door register_shutdown_function wordt uitgevoerd nadat het programma is beëindigd, ongeacht of er een fout in het proces zit. Dus in deze callback moeten we ook bepalen of er een fout is opgetreden, en als er een fout is opgetreden, zullen we deze in het logboek opnemen. Raadpleeg de volgende code voor details.
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);
}