المدوّنة · ووردبريس

ووردبريس عالق في وضع الصيانة بعد التحديث

· 6 دقائق قراءة

ووردبريس عالق في وضع الصيانة بعد التحديث

السيناريو كلاسيكي ويتكرر لآلاف المديرين يومياً: تدخل لوحة تحكم ووردبريس، وتجد تنبيهاً بوجود تحديثات جديدة للإضافات أو القوالب، فتنقر على زر «تحديث»؛ وفي منتصف العملية ينقطع اتصال الإنترنت للحظة، أو تنفد مهلة السيرفر المحددة لمعالجة الملفات، أو يغلق المستخدم لسان التبويب على عجل. وعندما تعود لفتح الموقع أو لوحة الإدارة تجد شاشة بيضاء تحمل عبارة صماء واحدة: «Briefly unavailable for scheduled maintenance. Check back in a minute» (أو بالترجمة العربية الرسمية: «الموقع غير متاح مؤقتاً لإجراء صيانة مجدولة. تحقق مرة أخرى خلال دقيقة»).

تمر الدقيقة والدقائق، وتظل الرسالة عالقة دون أي حراك، وتجد نفسك محروماً حتى من تسجيل الدخول إلى لوحة التحكم wp-admin لإنقاذ الموقف أو إيقاف التحديث! الخبر السار الذي يجب أن تطمئن له فوراً هو أن هذا العطل ليس اختراقاً أمنياً ولا تلفاً في قاعدة البيانات، بل هو مجرد ملف مؤقت متناهي الصغر نسيت نواة ووردبريس مسحه بسبب انقطاع العملية في منتصفها.

لقطة شاشة لمتصفح ويب يعرض رسالة وضع الصيانة في ووردبريس Briefly unavailable for scheduled maintenance
رسالة وضع الصيانة المؤقتة التي يتجمد عندها ووردبريس وتمنع وصول الزوار والإداريين على حد سواء.

ماذا يحدث خلف الكواليس أثناء تحديث ووردبريس؟#

لفهم سبب المشكلة، يجب إلقاء نظرة على الآلية الهندسية التي تتبعها نواة ووردبريس في ملف wp-includes/load.php عبر دالة wp_maintenance():

  1. بمجرد النقر على زر تحديث إضافة، يقوم ووردبريس بإنشاء ملف مؤقت خفي في المجلد الجذري للموقع باسم .maintenance.
  2. يحتوي هذا الملف على سطر برمجي وحيد يسجل الطابع الزمني اللحظي لبدء التحديث بنظام توقيت يونكس (Unix Timestamp):
    <?php $upgrading = 1727238000; ?>
  3. تقرأ نواة ووردبريس هذا الملف مع كل زيارة لأي صفحة؛ فإذا كان الملف موجوداً وكان الفارق الزمني بين الطابع المسجل والوقت الحالي أقل من عشر دقائق (ستمائة ثانية)، يوقف ووردبريس استدعاء القالب وقاعدة البيانات تماماً، ويعرض رسالة الصيانة لحماية الملفات من التضارب أثناء استبدالها وحذف النسخ القديمة.
  4. في الظروف الطبيعية، بعد اكتمال تنزيل الحزمة وفك ضغطها ونسخ الملفات الجديدة، يطلق ووردبريس تعليمة حذف للملف unlink( ABSPATH . '.maintenance' )، ليعود الموقع للعمل بصورة فورية.
  5. لكن إذا انقطعت العملية في المنتصف (بسبب انتهاء مهلة تنفيذ PHP المحددة بـ max_execution_time، أو استهلاك الذاكرة، أو فقدان الاتصال بالمتصفح)، يتوقف السكربت فجأة قبل أن يصل لسطر الحذف، فيبقى الملف عالقاً في السيرفر حتى تحذفه. صحيح أن دالة wp_is_maintenance_mode() في النواة تتجاهل الملف متى مرت عشر دقائق على الطابع الزمني المسجل فيه، لكن حذفه يدوياً ينهي الرسالة فوراً دون انتظار.

الحل الفوري في ثلاثين ثانية: حذف ملف .maintenance#

علاج هذه المشكلة جذري وبسيط ولا يستغرق سوى نصف دقيقة: حذف ذلك الملف يدوياً ليفتح الموقع من جديد في نفس الثانية دون أدنى فقدان للمحتوى!

الخطوة 1: الدخول إلى مدير الملفات (File Manager)#

سجل الدخول إلى لوحة استضافتك (cPanel أو Plesk أو أي لوحة سحابية) وافتح أداة مدير الملفات (File Manager)، أو اتصل بموقعك عبر بروتوكول SFTP باستخدام برنامج FileZilla.

الخطوة 2: إظهار الملفات المخفية (Show Hidden Files)#

نظراً لأن اسم الملف يبدأ بنقطة (.maintenance)، فإن أنظمة تشغيل لينكس ولوحات الاستضافة تعتبره ملفاً مخفياً افتراضياً لحمايته. لإظهاره داخل لوحة cPanel:

  • انقر على زر الإعدادات (Settings) في الزاوية العلوية اليمنى لمدير الملفات.
  • فعّل الخيار: «Show Hidden Files (dotfiles)» ثم اضغط على زر الحفظ (Save).

الخطوة 3: تحديد الملف وحذفه نهائياً#

  • توجه إلى المجلد الجذري لملفات ووردبريس (المسمى عادة public_html أو المسار الذي يحتوي على مجلدات wp-content و wp-admin).
  • ستجد الملف الصغير .maintenance مستقراً بجوار ملف wp-config.php.
  • انقر عليه بزر الفأرة الأيمن واختر حذف (Delete)، وتأكد من تخطي سلة المهملات لحذفه بشكل قطعي.

الحل عبر سطر الأوامر (SSH و WP-CLI)#

إذا كنت تدير خادم VPS وتفضل التعامل عبر الطرفية، يمكنك إنهاء وضع الصيانة بأمر سريع عبر سطر الأوامر:

# حذف الملف مباشرة عبر أمر لينكس
rm -f /var/www/example.com/public_html/.maintenance

# أو التحكم بوضع الصيانة عبر أداة WP-CLI
cd /var/www/example.com/public_html
wp maintenance-mode status
wp maintenance-mode deactivate

ماذا تفعل مباشرة بعد فك الحظر؟ (معالجة التحديث الناقص)#

بمجرد حذف الملف وتحديث الصفحة، سيعود موقعك للعمل فوراً وتفتح لوحة التحكم. لكن انتبه: الإضافة التي انقطع تحديثها أصبحت الآن في حالة غير مكتملة (ملفات قديمة اختلطت بملفات جديدة)، مما قد يسبب انهياراً للموقع إذا حاولت تشغيلها:

  1. ادخل فوراً إلى لوحة التحكم > إضافات > إضافات منصبة.
  2. ستلاحظ رسالة تنبيه حمراء أعلى الصفحة تفيد بتعطل الإضافة نتيجة خطأ في التحديث.
  3. انقر على رابط «تحديث الآن» لنفس الإضافة مرة أخرى؛ هذه المرة انتظر أمام الشاشة بهدوء حتى يكتمل التنزيل وتتحول الدائرة إلى علامة صح خضراء.
  4. إذا استمر التحديث في الفشل، احذف مجلد الإضافة التالفة من داخل wp-content/plugins/ ونزّل النسخة الأحدث كملف مضغوط (ZIP) من موقع ووردبريس الرسمي وارفعه من جديد عبر لوحة التحكم.

تصميم صفحة صيانة مخصصة واحترافية (Custom Maintenance Page)#

إذا كنت لا تريد أن يرى زوار موقعك تلك العبارة البيضاء الجافة أثناء فترات التحديث، يتيح لك ووردبريس تخصيص صفحة الصيانة بالكامل دون أي إضافات:

  • أنشئ ملفاً جديداً باسم maintenance.php وضعه داخل مجلد wp-content/ حصراً.
  • ضع داخل هذا الملف كود HTML وتصميم أنيق يحمل شعار موقعك ورسالة اعتذار ودودة للزوار تفيد بإجراء تحسينات سريعة.
  • بمجرد وجود هذا الملف، سيتجاهل ووردبريس الرسالة الافتراضية الصماء ويعرض تصميمك المخصص تلقائياً مع ترويسة HTTP 503 Service Unavailable الصديقة لمحركات البحث والتي تمنع جوجل من حذف صفحاتك من الأرشفة أثناء التحديث.

مقارنة دورة حياة التحديث: الطبيعية مقابل المعلقة#

المرحلة التحديث الطبيعي الناجح التحديث المعطل العالق
1. بدء العملية توليد ملف .maintenance تلقائياً في الجذر توليد ملف .maintenance تلقائياً في الجذر
2. تنزيل الحزمة وفكها اكتمال استبدال الملفات بسلاسة تامة انقطاع الاتصال أو انتهاء مهلة الخادم في المنتصف
3. نهاية التحديث حذف ملف .maintenance تلقائياً من النواة توقف السكربت فجأة قبل الوصول لتعليمة الحذف
4. حالة الموقع والزوار الموقع متاح للزوار خلال ثانيتين إلى ثلاث ثوانٍ الموقع معطل حتى تحذف الملف يدوياً أو تمر عشر دقائق على بدء التحديث

نصائح ذهبية لتجنب تجمد التحديث مستقبلاً#

  • لا تضغط على تحديث جماعي دفعة واحدة: تجنب النقر على «تحديث كافة الإضافات» إذا كان لديك عشر إضافات في قائمة الانتظار، خصوصاً في الاستضافات المشتركة محدودة الذاكرة. حدّث كل إضافة بمفردها لتضمن استقرار العملية.
  • لا تغلق نافذة المتصفح ولا تبدل التبويب: انتظر حتى تكتمل الدائرة وتظهر عبارة «تم التحديث بنجاح» قبل الانتقال لأي صفحة أخرى.
  • رفع مهلة تنفيذ أوامر PHP: تأكد من أن متغير max_execution_time في خادمك مضبوط على مائة وعشرين أو ثلاثمائة ثانية ليمنح الخادم الوقت الكافي لتنزيل الحزم الضخمة مثل إضافات المتاجر والمحررات المرئية.

المصادر#

التعليقات

كن أول من يشارك رأيه أو تجربته.

أضف تعليقاً أو سؤالاً

سجّل الدخول لتعجب بالتعليقات المفيدة وترفعها لأعلى النقاش. سجّل الدخول

لا يُنشر، ولا نرسل إليه شيئاً.

يظهر التعليق بعد مراجعته. الروابط لا تُفعَّل.

تبني موقعاً عربياً؟

سكربتات وقوالب وإضافات وخوادم — مصمّمة للمواقع العربية.

تصفّح المنتجات