PHP FATAL derejesindäki ýalňyşlyklary tutýar

Resmi salgylanma

Resmi web sahypasy set_error_handler register_shutdown_function

Erhli ýalňyşlyklary nädip gowy tutmaly

set_error_handler ýalňyşlyk görnüşleriniň köpüsini ele almak üçin ulanylyp bilner. FATAL derejeli ýalňyşlyk ýüze çykanda, PHP amaly gönüden-göni bes edýändigi sebäpli set_error_handler tarapyndan bellenen yzyna çagyryş funksiýasy ýüze çykyp bilmez. Bu wagt programmany ýatyrmak üçin yzyna çagyryş funksiýasyny bellemek üçin registr_shutdown_function ulanmalydyrys. Registr_shutdown_function tarapyndan bellenen jaňyň, programmanyň ýatyrylmagyndan soň ýerine ýetirilendigini bellemelidiris, amalda ýalňyşlyk barmy. Şeýlelik bilen, bu jaňda ýalňyşlygyň ýüze çykandygyny ýa-da ýokdugyny kesgitlemeli, eger ýalňyşlyk ýüze çykan bolsa, ony hasaba alarys. Jikme-jiklikler üçin aşakdaky koda ýüz tutmagyňyzy haýyş edýäris.

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