Register_ShutDown_Function ၏အခန်းကဏ် phin သည် PHP script execution ကိုအဆုံးသတ်သည့် PHP script execution ၏အဆုံးမှာ callback function ကိုမှတ်ပုံတင်ရန်ဖြစ်သည်။ ၎င်းကိုမကြာခဏ fatal အမှားများကိုမှတ်တမ်းတင်ရန်, အရင်းအမြစ်များကိုလွှတ်ပေးရန်သို့မဟုတ်အချို့သော Post-processing အလုပ်များလုပ်လေ့ရှိသည်။
register_shutdown_function(function () {
$error = error_get_last();
if ($error !== null) {
// ယုတ္တိဗေဒကိုင်တွယ်အမှားအမှား
file_put_contents('/tmp/php_error.log', print_r($error, true));
}
});
Register_shutDown_Function ကို ဖမ်းနိုင်သည့်အမှားသည် script ကိုအဆုံးသတ်ခြင်းမပြုမီ အမှားအယွင်း အမှား "အမှားအယွင်း" အမှား "ဖြစ်သည်။ ဖမ်းမိနိုင်သည့်အမှားအယွင်းအမျိုးအစားများမှာ -
E_ERROR : Runtime မှာဆိုးဝါးတဲ့အမှား
E_Parse : ခွဲခြမ်းစိတ်ဖြာခြင်းအမှား (အချို့ကိစ္စရပ်များတွင်)
E_Core_ERROR , E_COMPILE_ERROR : PHP စတင်သည့်အခါဆိုးဝါးသောအမှား
E_USER_ERROR : အသုံးပြုသူမှသတ်မှတ်ထားသောဆိုးဝါးသောအမှား
ဤအမှားများသည်များသောအားဖြင့် script interrupts ကို ဖြစ်ပေါ်စေသည်,
Register_shutDown_Function သည်အစွမ်းထက်သော်လည်း, အောက်ပါအမှားအယွင်းများသို့မဟုတ်အခြေအနေများသည်မယုံကြည်ကြပါ။
ဆိုးဝါးသောအမှားအယွင်းများသည် script ကိုအ နှော င့်အယှက်မဖြစ်စေနိုင်ပါ။
echo $undefined_variable; // အစီရင်ခံစာ notice,ကွပ်မျက်အကျိုးသက်ရောက်ပါဘူး
Shutdown function ကိုခေါ်လိမ့်မည်ဖြစ်သော်လည်း error_get_last () မှပြန်လာသောအကြောင်းအရာများတွင်ဤဆိုးဝါးသောအမှားအယွင်းများမပါ 0 င်ပါ။
အကယ်. script သည် ထွက်ပေါက် မှတစ်ဆင့်တက်ကြွစွာမှတစ်ဆင့်တက်ကြွစွာ တက်ကြွစွာ ထွက်ပေါ်လာပြီးထွက်ပေါက်မတိုင်မီဆိုးဝါးသောအမှားတစ်ခုမချမိပါက အမှားအယွင်းများ ကိုပြန်ဖွင့်ထားသည့်အမှားအယွင်းသည် NULL ဖြစ်သည်။
exit("အစီအစဉ်မှထွက်ပါ"); // သေနတ်မောင်းခလုတ် shutdown,ဒါပေမယ့်အဘယ်သူမျှမအမှားမှတ်တမ်းများ
PHP parsing pharing pharing perctax အမှားအယွင်းများတွင်အချို့သော syntax အမှားအယွင်းများရှိပြီး script သည် Execution Procking လုပ်ငန်းစဉ်ကိုပင်ထည့်သွင်းမထားပါ ။
// အောက်ပါကုဒ်သည်တိုက်ရိုက်ကျရှုံးရန်ခွဲခြမ်းစိတ်ဖြာခြင်းကိုဖြစ်ပေါ်စေသည်,မှတ်ပုံတင်နိုင်ခြင်းမရှိပါ shutdown လုပ်ဆောင်ချက်
echo "Hello
၎င်းသည် "အမှားအယွင်းမရရှိနိုင်ပါ" ဖြစ်သော်လည်းဆိုးဝါးသောအမှားများမပေါ်မီ ob_start () ကို ort_start () ကိုဖွင့်ထားပါကစာမျက်နှာ၏ output သည်ပျောက်ဆုံးသွားနိုင်သည်။ ဤအခြေအနေကို "Shutdown function သည်မမှန်ကန်ပါ" အတွက်မကြာခဏမှားလေ့ရှိသည်။
အမှားဖိနှိပ်သူသည်ဆိုးဝါးသောအမှားများကိုကာကွယ်ရန်မဟုတ်ဘဲဆိုးဝါးသောအမှားအယွင်းများကိုဖြည့်ဆည်းပေးနိုင်လိမ့်မည်မဟုတ်ဘဲအလွယ်တကူရှုပ်ထွေးစေနိုင်သောဆိုးဝါးသောအမှားအယွင်းများကိုနှိမ်နင်းလိမ့်မည်။ Register_shutdown_Function_Function က @ နှင့်ပင်ဆိုးဝါးသောအမှားများကိုဖမ်းနိုင်သည်။
@trigger_error("This is a user warning", E_USER_WARNING); // ဖမ်းမိလိမ့်မည်မဟုတ်ပါ
အစောပိုင်းတွင်ဖော်ပြခဲ့သည့်အတိုင်း Register_shutDown_Function သည် Funal အမှားများကိုသာကိုင်တွယ်နိုင်သည်။ e_warning နှင့် e_notice အတွက် set_error_handler အတွက်အသုံးပြုသင့်သည်။
အမှားကိုင်တွယ်မှုကိုအဆင့်များစွာတွင်ခုခံကာကွယ်သင့်သည်။ အကောင်းဆုံးအလေ့အကျင့်မှာ၎င်းကိုပေါင်းစပ်။ အသုံးပြုရန်ဖြစ်သည်။
Set_ERROROR_HANDLER () သတိပေးချက်များနှင့်အသိပေးချက်များကဲ့သို့သောဆိုးဝါးသောအမှားများကိုဖမ်းယူသည်။
Set_Exception_Handler () မနွေးထွေးသောခြွင်းချက်များကိုဖမ်းမိခြင်း,
Register_shutDown_Function () script မတိုင်မီနောက်ဆုံးအမှားကိုဖမ်းယူသည်။
အကြိမ်ပေါင်းများစွာ ပိတ်ပစ်ခြင်းသည် အမှန်ပင် ကွပ်မျက်ခံရသည် ။
ပိုမိုပြည့်စုံသောအမှားကိုင်တွယ်မှုစနစ်တစ်ခုအတွက်အောက်ပါပေါင်းစပ်မှုကိုအကြံပြုပါသည်။
set_error_handler('customErrorHandler');
set_exception_handler('customExceptionHandler');
register_shutdown_function('shutdownHandler');
function customErrorHandler($errno, $errstr, $errfile, $errline) {
// စံချိန် warning、notice စောင့်
}
function customExceptionHandler($exception) {
// စံချိန်未捕获异常
}
function shutdownHandler() {
$error = error_get_last();
if ($error !== null && in_array($error['type'], [E_ERROR, E_PARSE, E_CORE_ERROR, E_COMPILE_ERROR])) {
// 致命错误စံချိန်
file_get_contents('https://gitbox.net/log.php?msg=' . urlencode($error['message']));
}
}