أسرار تسريع مواقع ووردبريس: إزالة مهام CRON المجدولة غير الصالحة تلقائيًا

أسوأ شيء بالنسبة لخادم الويب ليس التوقف عن العمل، بل أن يتم إبطاء عمله بسبب مهام لا معنى لها.

WordPress في عالم WP-Cron، الأمر أشبه بساعة غير مرئية، تقوم بجدولة مهام موقوتة مختلفة بصمت.

كانت في الأصل أداة مفيدة، لكنها غالباً ما تصبح قاتلاً خفياً يبطئ الأداء بسبب "المهام الزومبي" المتبقية بعد إلغاء تثبيت المكونات الإضافية.

طبيعة ومخاطر فيروس كورونا (WP-Cron) الخفية

WP-Cron ليس Cron على مستوى النظام، بل هو آلية مهام مجدولة تحاكيها WordPress نفسها.

لا يتحقق إلا مما إذا كانت هناك أي مهام يجب تنفيذها عند تشغيلها بواسطة وصول المستخدم.

هذا يعني أنه إذا قام أحد المكونات الإضافية بتسجيل مهمة يومية، فقد تظل تلك المهمة موجودة حتى في حالة إلغاء تثبيت المكون الإضافي.

والنتيجة هي أن ووردبريس يحاول تنفيذ خطاف غير موجود أصلاً كل يوم.

هذا لا يؤدي فقط إلى إهدار الموارد، بل قد يؤدي أيضًا إلى تراكم سجلات غير صالحة في قاعدة البيانات.

بحسب وثائق مطوري ووردبريس الرسمية، يعتمد جدولة مهام WP-Cron على... _get_cron_array() لاسترداد جميع المهام المسجلة.

إذا لم تعد الوظيفة المقابلة للخطاف موجودة، فسيظل النظام يحاول تنفيذها، ولكن في النهاية سيدور بلا هدف.

لماذا يتم تنظيف المهام المجدولة غير الصالحة؟

تخيل موقع ووردبريس الخاص بك كمكتب.

يلتزم الموظفون بتسجيل الحضور في الوقت المحدد كل يوم، لكن بعضهم قد غادر الشركة بالفعل.

لا تزال أرقام هوية موظفيهم موجودة في النظام، وجهاز الحضور ينتظر منهم تمرير بطاقاتهم كل يوم.

هذه عملية CRON غير صالحة.

إذا لم يتم تنظيف قاعدة البيانات لفترة طويلة، فستحتوي على... wp_options سيتم ملء الجدول وسيصبح غير صالح. _transient البيانات.

والأسوأ من ذلك، أن عمليات التحقق المتكررة من عدم الصلاحية تزيد من عبء التنفيذ على لغة PHP.

تشير الأبحاث إلى أن عدد مواقع ووردبريس يتجاوز [العدد] 30% من الهدر في الأداءويرجع ذلك إلى وظائف CRON غير الصالحة أو الزائدة عن الحاجة (المصدر: التحليل الفني لمجلة Smashing).

تنفيذ التعليمات البرمجية لإزالة المهام غير الصالحة تلقائيًا

الحل في الواقع أنيق للغاية.

أسرار تسريع مواقع ووردبريس: إزالة مهام CRON المجدولة غير الصالحة تلقائيًا

كل ما نحتاجه هو تشغيل برنامج كشف كل يوم لفحص جميع المهام المجدولة، وإذا وجد أن الوظيفة المقابلة للخطاف لم تعد موجودة، فسيقوم بإزالتها.

يمكن تحقيق ذلك باستخدام التعليمات البرمجية التالية:

add_action('wpcwl_remove_invild_crons', function(){
    global $wp_filter;

    $wp_crons = _get_cron_array();

    foreach ($wp_crons as $timestamp => $wp_cron) {
        foreach ($wp_cron as $hook => $dings) {
            if(empty($wp_filter[$hook])){
                foreach( $dings as $sig=>$data ) {
                    wp_unschedule_event($timestamp, $hook, $data['args']);
                }
            }
        }
    }
});

if(!wp_next_scheduled('wpcwl_remove_invild_crons')) {
    wp_schedule_event( time(), 'daily', 'wpcwl_remove_invild_crons' );
}

يقوم هذا الكود بثلاثة أشياء:

  1. كرر جميع المهام المجدولة:يمر _get_cron_array() استرجاع المهام المسجلة حاليًا.
  2. اختبر مدى فعالية الخطاف:لو $wp_filter[$hook] إذا كان فارغًا، فهذا يعني أنه لا توجد وظيفة مقابلة لهذا الخطاف.
  3. إزالة المهام غير الصالحة: يتصل wp_unschedule_event() احذف المهمة.

وأخيرًا، قام أيضًا بتسجيل مهمة يومية لضمان التنظيف التلقائي كل يوم.

تحليل معمق لمنطق الكود

يجد الكثير من الناس هذا الكود معقداً، لكن المنطق في الواقع بسيط للغاية:

  • الحلقة الأولى: قم بالمرور على جميع المهام حسب الطابع الزمني.
  • الحلقة الثانيةتحقق من المهام حسب اسم الخطاف.
  • الحلقة الثالثةقم بتنظيف توقيعات المهام ومعلماتها واحدة تلو الأخرى.

تضمن طريقة التداخل ثلاثية المستويات هذه عدم تفويت أي مهمة غير صالحة.

wp_unschedule_event() هذه هي طريقة الإزالة التي توصي بها ووردبريس رسميًا، وستقوم أيضًا بتنظيف السجلات ذات الصلة في قاعدة البيانات.

سيناريوهات التطبيق الفعلية

举个例子.

لقد قمت بتثبيت واحد تحسين محركات البحث (SEO) يقوم البرنامج المساعد بإنشاء خريطة للموقع يوميًا.

قمت لاحقًا بإلغاء تثبيت الملحق، لكن مهمة CRON الخاصة به بقيت.

والنتيجة هي أن ووردبريس يحاول التنفيذ كل يوم. seo_generate_sitemap هذا الخطاف.

بما أن الوظيفة لم تعد موجودة، فإن النظام لا يمكن أن يعمل إلا عبثاً.

إذا قمت بتمكين الكود أعلاه، فسيتم تنظيف هذه المهمة غير الصالحة تلقائيًا في اليوم التالي.

تأثير تحسين الأداء

استنادًا إلى بيانات اختبار فعلية، موقع ووردبريس متوسط ​​الحجم (حوالي 50 إضافة) بعد تفعيل التنظيف التلقائي:

  • تم تقليل استعلامات قاعدة البيانات 12%.
  • تحسنت سرعة تحميل الصفحة 0.3 ثانية.
  • تم تقليل المهام غير الصالحة اليومية 20+.

تأتي هذه البيانات من تجارب مقارنة في تقرير أداء محرك WP.

أفضل الممارسات واقتراحات التحسين

بالإضافة إلى التنظيف التلقائي، إليك بعض اقتراحات التحسين:

  • قم بإجراء عمليات تفتيش دورية لعمليات CRONباستخدام إضافات مثل WP Crontrol، يمكنك عرض جميع المهام بشكل مرئي.
  • تقليل الإضافات الزائدةعند إلغاء تثبيت أحد المكونات الإضافية، من الأفضل مسح مهامها المجدولة يدويًا.
  • استخدم Cron على مستوى النظامبالنسبة للمواقع ذات الزيارات العالية، يوصى بتعطيل WP-Cron واستخدام خادم Cron الفعلي للخادم بدلاً من ذلك.

هذا يتجنب مشاكل تبعية الوصول في WP-Cron وهو أكثر استقرارًا.

الخلاصة: حافظ على ووردبريس بشكل منتظم.

تُشبه المهام المجدولة في ووردبريس فرقة موسيقية.

كل إضافة تشبه الموسيقي، حيث تؤدي كل منها دورها الخاص لخلق لحن متناغم.

لكن إذا غادر الموسيقيون بالفعل ولكن النوتة الموسيقية لا تزال موجودة، فهذا مجرد ضجيج.

يؤدي الحذف التلقائي لوظائف CRON غير الصالحة إلى التخلص من هذه الضوضاء، مما يحافظ على تشغيل النظام بوتيرة نظيفة.

في العصر الرقمي، الكفاءة هي الحياة.

لا يعتمد أداء الموقع الإلكتروني على تأثيرات الواجهة الأمامية الرائعة فحسب، بل يعتمد أيضًا على إدارة الواجهة الخلفية الدقيقة.

إن إتقان هذا الكود سيمنحك القدرة على إصلاح نظام ووردبريس ذاتيًا.

وكما قال هيجل ذات مرة: "الحرية ليست في فعل ما تريد، بل في ضبط النفس".

لن تتمكن من إطلاق العنان لقوة الحرية إلا من خلال تعليم ووردبريس الخاص بك الانضباط الذاتي.

مدونة Hope Chen Weiliang ( https://www.chenweiliang.com/ قد تكون المقالة "أسرار تسريع مواقع ووردبريس: إزالة مهام CRON المجدولة غير الصالحة تلقائيًا" التي تمت مشاركتها هنا مفيدة لك.

مرحبا بكم في مشاركة رابط هذه المقالة:https://www.chenweiliang.com/cwl-33971.html

لاكتشاف المزيد من الحيل المخفية🔑، مرحبًا بك في الانضمام إلى قناتنا على Telegram!

مشاركة ومثل إذا كنت ترغب في ذلك! مشاركاتك وإعجاباتك هي حافزنا المستمر!

 

发表 评论

لن يتم نشر عنوان بريدك الإلكتروني. 必填 项 已 用 * 标注

انتقل إلى الأعلى