Mae PHP yn dal gwallau lefel FATAL
Cyfeirnod swyddogol
Gwefan swyddogol set_error_handler register_shutdown_functionSut i ddal pob gwall yn berffaith
gellir defnyddio set_error_handler i ddal y mwyafrif o fathau o wallau. Pan ddaw gwall lefel FATAL ar draws, oherwydd bod PHP yn terfynu'r llawdriniaeth yn uniongyrchol, ni ellir sbarduno'r swyddogaeth galw yn ôl a osodwyd gan set_error_handler. Ar yr adeg hon, mae angen i ni ddefnyddio register_shutdown_function i osod y swyddogaeth galw yn ôl ar gyfer terfynu rhaglenni. Dylid nodi bod yr alwad yn ôl a osodwyd gan register_shutdown_function yn cael ei gweithredu ar ôl i'r rhaglen gael ei therfynu, ni waeth a oes gwall yn y broses. Felly yn yr alwad hon yn ôl, mae angen i ni hefyd benderfynu a oes gwall wedi digwydd, ac a oes gwall wedi digwydd, byddwn yn ei gofnodi yn y log. Am fanylion, cyfeiriwch at y cod canlynol.
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);
}