PHP သည် FATAL အဆင့်အမှားများကိုဖမ်းမိသည်

တရားဝင်ကိုးကား

တရားဝင်ဝက်ဘ်ဆိုက် set_error_handler register_shutdown_function

အမှားအယွင်းတွေအားလုံးကိုဘယ်လိုဖမ်းမိမလဲ

set_error_handler ကိုအမှားအယွင်းများအများဆုံးဖမ်းယူရန်အသုံးပြုနိုင်သည်။ PHP သည်စစ်ဆင်ရေးကိုတိုက်ရိုက်အဆုံးသတ်သောကြောင့် FATAL အဆင့်အမှားတစ်ခုကြုံတွေ့ရသောအခါ set_error_handler မှသတ်မှတ်ထားသောပြန်ခေါ် function ကိုအစပျိုး။ မရပါ။ ဤအချိန်တွင်ပရိုဂရမ်ရပ်စဲမှုအတွက် callback function ကိုသတ်မှတ်ရန် register_shutdown_function ကိုကျွန်ုပ်တို့သုံးရမည်။ မှတ်သားထားသင့်သည်မှာ register_shutdown_function မှသတ်မှတ်ထားသော callback သည် program ကိုရပ်စဲပြီးသည်နှင့်လုပ်ငန်းစဉ်အတွင်းအမှားအယွင်းရှိမရှိမည်သို့ပြုလုပ်သည်ကိုမှတ်သားရန်ဖြစ်သည်။ ဒါကြောင့်ဒီ callback မှာအမှားတစ်ခုဖြစ်မလားဆုံးဖြတ်ဖို့လိုတယ်။ အမှားတစ်ခုဖြစ်ခဲ့ရင် log ထဲမှာမှတ်တမ်းတင်လိမ့်မယ်။ အသေးစိတ်အတွက် ကျေးဇူးပြု၍ အောက်ပါကုဒ်ကိုဖတ်ပါ။

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