الدرس (4): سكربت PHP لفحص وتلخيص أخطاء السيرفر (Server Error Logs) في XenForo
السلام عليكم ورحمة الله وبركاته،
أهلاً بكم أخواني وأعضائنا الكرام في شبكة كود نت.
نواصل معكم سلسلة الفحوصات والسكربتات السريعة الخاصة بمنتديات XenForo، ونصل اليوم إلى الدرس الرابع والمخصصة لفحص وفلترة أخطاء النظام (Server Error Logs).
عند حدوث استثناءات برمجية (Exceptions) أو أخطاء في الإضافات (Add-ons)، يقوم XenForo بتسجيلها في جدول xf_server_error_log. مع الوقت وتكرار الأخطاء، قد يتضخم هذا الجدول ويمتلئ بقواعد بيانات مكررة تستهلك المساحة وتصعب عملية التتبع.
هذا السكربت يتصل بقاعدة البيانات مباشرة ويقوم بجلب أحدث الأخطاء المسجلة وتجميعها حسب نوع الخطأ ورسالة الخطأ مع عرض عدد مرات التكرار وتاريخ آخر ظهور، مما يتيح لك تحديد المشاكل الحقيقية وحلها بسرعة.

الكود البرمجي:
كيف يعمل السكربت؟
* الاستعلام عن جدول xf_server_error_log: يصل مباشرة إلى سجل الأخطاء الرسمي للنظام.
* التجميع الذكي (GROUP BY): يجمع الأخطاء المتشابهة لتجنب تكرار الصفوف ورؤية الصورة الكاملة للمشكلة.
* إحصاء التكرار والوقت: يعرض عدد مرات تكرار الخطأ مع تحويل الختم الزمني (Timestamp) إلى تاريخ ووقت واضحين.
طريقة الاستخدام:
1. قم بإنشاء ملف باسم check_errors.php في الجذر الرئيسي للمنتدى.
2. ضع الكود أعلاه داخل الملف واحفظه.
3. افتح الرابط عبر المتصفح: https://your-domain.com/check_errors.php
4. يمكنك الاستفادة من البيانات الظاهرة لمعرفة الإضافة أو الملف المتسبب بالخطأ ومعالجته من لوحة التحكم أو التواصل مع المطور.
5. لا تنسَ حذف الملف بعد الانتهاء للحفاظ على أمان المنتدى.
انتظرونا في **الدرس الخامس** من سلسلة الفحوصات! إذا كانت لديك أي ملاحظات أو استفسارات، يسعدني مشاركتك في الردود.
السلام عليكم ورحمة الله وبركاته،
أهلاً بكم أخواني وأعضائنا الكرام في شبكة كود نت.
نواصل معكم سلسلة الفحوصات والسكربتات السريعة الخاصة بمنتديات XenForo، ونصل اليوم إلى الدرس الرابع والمخصصة لفحص وفلترة أخطاء النظام (Server Error Logs).
عند حدوث استثناءات برمجية (Exceptions) أو أخطاء في الإضافات (Add-ons)، يقوم XenForo بتسجيلها في جدول xf_server_error_log. مع الوقت وتكرار الأخطاء، قد يتضخم هذا الجدول ويمتلئ بقواعد بيانات مكررة تستهلك المساحة وتصعب عملية التتبع.
هذا السكربت يتصل بقاعدة البيانات مباشرة ويقوم بجلب أحدث الأخطاء المسجلة وتجميعها حسب نوع الخطأ ورسالة الخطأ مع عرض عدد مرات التكرار وتاريخ آخر ظهور، مما يتيح لك تحديد المشاكل الحقيقية وحلها بسرعة.

الكود البرمجي:
<?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. لا تنسَ حذف الملف بعد الانتهاء للحفاظ على أمان المنتدى.
انتظرونا في **الدرس الخامس** من سلسلة الفحوصات! إذا كانت لديك أي ملاحظات أو استفسارات، يسعدني مشاركتك في الردود.