XF 2.3 كود PHP لفحص وتلخيص أخطاء السيرفر (Server Error Logs) في XenForo الدرس (4)

الدرس (4): سكربت PHP لفحص وتلخيص أخطاء السيرفر (Server Error Logs) في XenForo

السلام عليكم ورحمة الله وبركاته،

أهلاً بكم أخواني وأعضائنا الكرام في شبكة كود نت.

نواصل معكم سلسلة الفحوصات والسكربتات السريعة الخاصة بمنتديات XenForo، ونصل اليوم إلى الدرس الرابع والمخصصة لفحص وفلترة أخطاء النظام (Server Error Logs).

عند حدوث استثناءات برمجية (Exceptions) أو أخطاء في الإضافات (Add-ons)، يقوم XenForo بتسجيلها في جدول xf_server_error_log. مع الوقت وتكرار الأخطاء، قد يتضخم هذا الجدول ويمتلئ بقواعد بيانات مكررة تستهلك المساحة وتصعب عملية التتبع.

هذا السكربت يتصل بقاعدة البيانات مباشرة ويقوم بجلب أحدث الأخطاء المسجلة وتجميعها حسب نوع الخطأ ورسالة الخطأ مع عرض عدد مرات التكرار وتاريخ آخر ظهور، مما يتيح لك تحديد المشاكل الحقيقية وحلها بسرعة.
IMG_9841.webp
الكود البرمجي:

PHP:
<?php

// تحديد مسار مجلد XenForo الرئيسي
$dir = __DIR__;

if (!file_exists($dir . '/src/XF.php'))
{
    die('خطأ: لم يتم العثور على ملفات XenForo. يرجى وضع الملف في المجلد الرئيسي للمنتدى.');
}

require($dir . '/src/XF.php');

\XF::start($dir);

$app = \XF::setupApp('XF\App');
$db = \XF::db();

// استعلام لجلب الأخطاء المجمعة والتكرارات
$errorLogs = $db->fetchAll("
    SELECT exception_type, message, COUNT(*) as total_occurrences, MAX(error_time) as last_occurrence
    FROM xf_server_error_log
    GROUP BY exception_type, message
    ORDER BY last_occurrence DESC
    LIMIT 20
");

echo '<h2>فحص وأرشيف أخطاء السيرفر (Server Error Logs)</h2>';

if (empty($errorLogs))
{
    echo '<strong style="color:green">ممتاز! لا توجد أي أخطاء مسجلة في سجل النظام حالياً.</strong>';
}
else
{
    echo '<p>عرض أحدث الأخطاء المسجلة وتكرارها (أقصى حد 20 نوع خطأ):</p>';
    echo '<table border="1" cellpadding="8" cellspacing="0" style="border-collapse:collapse; width:100%;">';
    echo '<tr style="background:#f2f2f2;"><th>نوع الخطأ</th><th>رسالة الخطأ</th><th>عدد التكرارات</th><th>آخر حدوث</th></tr>';

    foreach ($errorLogs as $log)
    {
        echo '<tr>';
        echo '<td>' . htmlspecialchars($log['exception_type']) . '</td>';
        echo '<td>' . htmlspecialchars($log['message']) . '</td>';
        echo '<td style="text-align:center;">' . number_format($log['total_occurrences']) . '</td>';
        echo '<td>' . date('Y-m-d H:i:s', $log['last_occurrence']) . '</td>';
        echo '</tr>';
    }

    echo '</table>';
}

كيف يعمل السكربت؟

* الاستعلام عن جدول xf_server_error_log: يصل مباشرة إلى سجل الأخطاء الرسمي للنظام.
* التجميع الذكي (GROUP BY): يجمع الأخطاء المتشابهة لتجنب تكرار الصفوف ورؤية الصورة الكاملة للمشكلة.
* إحصاء التكرار والوقت: يعرض عدد مرات تكرار الخطأ مع تحويل الختم الزمني (Timestamp) إلى تاريخ ووقت واضحين.

طريقة الاستخدام:

1. قم بإنشاء ملف باسم check_errors.php في الجذر الرئيسي للمنتدى.
2. ضع الكود أعلاه داخل الملف واحفظه.
3. افتح الرابط عبر المتصفح: https://your-domain.com/check_errors.php
4. يمكنك الاستفادة من البيانات الظاهرة لمعرفة الإضافة أو الملف المتسبب بالخطأ ومعالجته من لوحة التحكم أو التواصل مع المطور.
5. لا تنسَ حذف الملف بعد الانتهاء للحفاظ على أمان المنتدى.

انتظرونا في **الدرس الخامس** من سلسلة الفحوصات! إذا كانت لديك أي ملاحظات أو استفسارات، يسعدني مشاركتك في الردود.
 
عودة
أعلى أسفل