"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيف يمكنني التقاط أخطاء قاتلة في PHP باستخدام `register_shutdown_function ()`؟

كيف يمكنني التقاط أخطاء قاتلة في PHP باستخدام `register_shutdown_function ()`؟

تم النشر بتاريخ 2025-01-24
تصفح:709

How Can I Catch Fatal Errors in PHP Using `register_shutdown_function()`?

اكتشاف أخطاء PHP الفادحة باستخدام وظيفة التسجيل_shutdown_

في PHP، يعد set_error_handler() مفيدًا لمعالجة معظم الأخطاء. ومع ذلك، لا يمكنه التقاط الأخطاء الفادحة مثل تلك الناتجة عن استدعاء وظائف غير موجودة. لمعالجة هذا القيد، يمكننا الاستفادة من وظيفةregister_shutdown_function.

استخدام Register_shutdown_function

register_shutdown_function() هي وظيفة يمكن استدعاؤها عند إيقاف تشغيل PHP. يستغرق وظيفة محددة من قبل المستخدم كمعلمة. يمكن لهذه الوظيفة بعد ذلك التقاط أي أخطاء غير معالجة حدثت أثناء التنفيذ.

register_shutdown_function("fatal_handler");

function fatal_handler() {
    $error = error_get_last();
    if ($error !== NULL) {
        // Extract error information
        $errno = $error["type"];
        $errfile = $error["file"];
        $errline = $error["line"];
        $errstr = $error["message"];
        // Send error details via email using error_mail
        error_mail(format_error($errno, $errstr, $errfile, $errline));
    }
}

وظائف إضافية

في الكود أعلاه، افترضنا وجود وظيفتين إضافيتين: error_mail وformat_error. إليك كيفية تعريفها:

function format_error($errno, $errstr, $errfile, $errline) { $trace = print_r(debug_backtrace(false), true); محتوى $ = "..."; // قم بتنسيق رسالة الخطأ حسب الحاجة إرجاع محتوى $؛
function format_error($errno, $errstr, $errfile, $errline) {
    $trace = print_r(debug_backtrace(false), true);
    $content = "..."; // Format the error message as needed
    return $content;
}
وظيفة error_mail($content) { // استخدم Swift Mailer أو مكتبة إرسال البريد الأخرى لإرسال رسالة الخطأ عبر البريد الإلكتروني
function format_error($errno, $errstr, $errfile, $errline) {
    $trace = print_r(debug_backtrace(false), true);
    $content = "..."; // Format the error message as needed
    return $content;
}

ملاحظات إضافية

    تتطلب وظيفة register_shutdown_function PHP 5.2 أو أحدث.
  • يوفر الثابت $php_errormsg معلومات حول الخطأ الأحدث.
  • راجع وثائق الثوابت المحددة مسبقًا للحصول على قائمة بأنواع الأخطاء (على سبيل المثال، E_ERROR).
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3