PHP inakamata makosa ya kiwango cha FATAL

Rejea rasmi

Tovuti rasmi set_error_handler register_shutdown_function

Jinsi ya kukamata makosa yote kikamilifu

set_error_handler inaweza kutumika kunasa aina nyingi za makosa. Wakati hitilafu ya kiwango cha FATAL inakabiliwa, kwa sababu PHP hukomesha operesheni moja kwa moja, kazi ya kupiga tena iliyowekwa na set_error_handler haiwezi kusababishwa. Kwa wakati huu, tunahitaji kutumia rejista_kuzima_utendaji ili kuweka kazi ya kupigia simu kukomesha programu. Ikumbukwe kwamba upigaji simu uliowekwa na rejista_shutdown_function hufanywa baada ya mpango kusitishwa, bila kujali ikiwa kuna hitilafu katika mchakato. Kwa hivyo katika upigaji simu huu, tunahitaji pia kubaini ikiwa kosa limetokea, na ikiwa kosa limetokea, tutarekodi kwenye logi. Kwa maelezo, tafadhali rejea nambari ifuatayo.

            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);
}