PHP ចាប់កំហុសកម្រិត FATAL

ឯកសារយោងផ្លូវការ

គេហទំព័រ​ផ្លូវការ set_error_handler register_shutdown_function

វិធីចាប់កំហុសទាំងអស់យ៉ាងល្អឥតខ្ចោះ

set_error_handler អាចត្រូវបានប្រើដើម្បីចាប់យកប្រភេទកំហុសភាគច្រើននៅពេលដែលកំហុសកំរិត FATAL ត្រូវបានជួបប្រទះដោយសារតែ PHP បញ្ចប់ប្រតិបត្តិការដោយផ្ទាល់មុខងារ callback ដែលកំណត់ដោយ set_error_handler មិនអាចត្រូវបានបង្កឡើង។ នៅពេលនេះយើងត្រូវប្រើការចុះឈ្មោះ - បិទដើម្បីកំណត់មុខងារហៅត្រឡប់មកវិញសម្រាប់ការបញ្ចប់កម្មវិធី។ គួរកត់សំគាល់ផងដែរថាការហៅត្រឡប់មកវិញត្រូវបានកំណត់ដោយ register_shutdown_function ត្រូវបានប្រតិបត្តិបន្ទាប់ពីកម្មវិធីត្រូវបានបញ្ចប់ដោយមិនគិតពីថាតើមានកំហុសក្នុងដំណើរការនេះទេ។ ដូច្នេះនៅក្នុងការហៅត្រឡប់មកវិញនេះយើងក៏ត្រូវកំណត់ថាតើមានកំហុសណាមួយកើតឡើងហើយប្រសិនបើមានកំហុសកើតឡើងយើងនឹងកត់ត្រាវានៅក្នុងកំណត់ហេតុ។ សម្រាប់ព័ត៌មានលម្អិតសូមមើលលេខកូដខាងក្រោម។

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