كيف يعمل WordPress Cron

نشرت: 2021-12-03

هل تساءلت يومًا ما هو WP-Cron؟ إذا كان الأمر كذلك ، فهذه هي المقالة المثالية لتتعلم كل ما تحتاج لمعرفته حول مهام WordPress المجدولة.

Cron (Command Run On) هي أداة مساعدة بدأت في أنظمة UNIX ، ثم تطورت لاحقًا على توزيعات LINUX التي تم اقتراحها كمجدول زمني للعمل.

وظيفة cron هي مهمة يتم إجراؤها بشكل متكرر أو كمهمة لمرة واحدة. على مر السنين ، تم استخدامه في الغالب كأداة لإدارة النظام لتشغيل المهام تلقائيًا.

وورد كرون

أثناء تشغيل موقع WordPress على الويب ، يتم تنفيذ بعض المهام في الخلفية التي يجب تنفيذها بشكل دوري ، مثل التحقق من تحديثات السمات والمكونات الإضافية ، والمنشورات المجدولة ، والعابرين المراد حذفهم وغير ذلك الكثير. تتم معالجة هذه المهام المجدولة المستندة إلى الوقت بواسطة WP-Cron.

في تثبيت WordPress الخاص بك ، الملف المرتبط بوظائف cron هو ملف wp-cron.php ، الموجود في المجلد الجذر للتثبيت.

يحتوي ملف wp-cron.php على رمز المهام الآلية المتعلقة بالتحديثات والمنشورات.

كيف تعمل

يتحقق WP-Cron من قائمة المهام في كل تحميل صفحة ويتم تنفيذه وفقًا لذلك.

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

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

لذلك ، ضع في اعتبارك ما يفعله WordPress كحل بديل في هذه الحالة. ومع ذلك ، فإن هذا له بعض العيوب التي سوف ندرسها بعد فترة.

إضافة WP-Crontrol

هناك طريقة رائعة وسهلة لعرض قائمة وظائف cron في موقع WordPress الخاص بك ، وهي تثبيت المكون الإضافي WP-Crontrol.

بعد تنشيطه ، يمكنك عرض صفحة مسؤول المكون الإضافي ضمن أدوات-> عنصر قائمة أحداث Cron. في تركيب الفانيليا ، سترى شيئًا كهذا:

إذا قمت بتمرير الماوس فوق كل صف ، فستلاحظ أنه تم توفير إجراءات لك لتحرير أو تشغيل أي من الأحداث.

في شاشة التحرير الخاصة بحدث wp_update_themes على سبيل المثال ، يمكنك تعديل إعداداته

ضمن عنصر القائمة Settings -> Cron Schedules ، يمكنك عرض الجداول الافتراضية وإذا كنت ترغب في ذلك ، قم بإضافة واحد خاص بك ومنحه اسمًا ليتم عرضه في القائمة.

كيفية إنشاء وظيفة كرون

لإضافة وظيفة cron يدويًا ، كل ما عليك فعله هو تحرير ملف functions.php الخاص بالثيم. لتوضيح مثال بسيط ، افتحه بمحررك المفضل وأضف الجزء التالي من الكود:

 add_action( 'my_cronjob', 'my_cronjob_function' ); function my_cronjob_function() { wp_mail( 'EMAIL_ADDRESS', 'Test email', 'This is a test message' ); }

حيث "my_cronjob" هو اسم الخطاف الخاص بك و "my_cronjob_function" هو اسم وظيفتك التي سترسل ببساطة بريدًا إلكترونيًا إلى العنوان الذي حددته عن طريق استبدال EMAIL_ADDRESS بالعنوان المطلوب.

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

كيفية تشغيل الوظيفة مرة واحدة

لتنفيذ الإجراء كمهمة WP-Cron لمرة واحدة ، يتعين علينا استخدام وظيفة wp_schedule_single_event () WordPress المضمنة التي تم تصميمها لتشغيل خطاف في وقت محدد. هيكلها مثل هذا:

wp_schedule_single_event( $timestamp, $hook, $args, $wp_error )

حيث $ timestamp هو الطابع الزمني لـ Unix للوقت التالي لتشغيل الحدث و $ hook هو خطاف الإجراء الذي يتم تنفيذه عند تشغيل الحدث.

كل من هذه المعلمات مطلوبة. الآن دعنا نتحدث عن المعلمات الاختيارية.

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

يمكن استخدام المعلمة $ wp_error لإرجاع WP_Error عند الفشل. قيمته الافتراضية هي false.

سيكون الكود المقابل في ملف functions.php كما يلي:

 add_action( 'my_cronjob', 'my_cronjob_function' ); function my_cronjob_function() { wp_mail( 'EMAIL_ADDRESS', 'Test email', 'This is a test message' ); } wp_schedule_single_event( time() + 3600, 'my_cronjob' );

في هذه المرحلة ، يجب أن تكون قادرًا على رؤية مهمتك المخصصة في القائمة.

كيفية تشغيل الوظيفة كحدث متكرر

ما يوفره WordPress لهذا السيناريو هو وظيفة wp_schedule_event () التي تم تنظيمها على هذا النحو

wp_schedule_event( $timestamp, $recurrence, $hook, $args, $wp_error)

المعلمة timestamp $ هي الطابع الزمني المطلوب لـ Unix عندما يتم تشغيل الحدث في المرة التالية ، كما أن $ recurrence عبارة عن سلسلة مطلوبة أيضًا لعدد المرات التي يجب أن يتكرر فيها الحدث لاحقًا و $ hook هو خطاف الإجراء المطلوب تنفيذه عند تشغيل الحدث.

المعلمات الاختيارية $ args و $ wp_error هي نفسها كما كانت من قبل.

الكود الذي يدير الوظيفة مع تكرار ، دعنا نقول ، ساعة واحدة هو هذا:

 add_action('my_hourly_cronjob', 'hourly_action'); function hourly_action() { wp_mail( 'EMAIL_ADDRESS', 'Test email', 'This is a test message' ); } if (! wp_next_scheduled ( 'my_hourly_cronjob' )) { wp_schedule_event(time(), 'hourly', 'my_hourly_cronjob'); }

استخدمنا الدالة wp_next_scheduled () في عبارة "if" كما ترى أعلاه ، وذلك لتجنب تكرار الأحداث والتأكد من عدم جدولة المهمة بالفعل قبل المتابعة وتشغيلها.

استخدمنا أيضًا تسمية "كل ساعة" من الجدول المجدول ضمن الإعدادات -> جداول Cron. إذا أردنا حدثًا مختلفًا ، دعنا نقول كل 45 دقيقة ، يجب علينا أولاً إنشاء جدول Cron المخصص باسم "45_minutes" ثم استخدامه في الكود.

 add_action('my_45_cronjob', 'my_45_action'); function my_45_action() { wp_mail( 'EMAIL_ADDRESS', 'Test email', 'This is a test message' ); } if (! wp_next_scheduled ( 'my_45_cronjob' )) { wp_schedule_event(time(), '45_minutes', 'my_45_cronjob'); }

في هذه المرحلة ، يجب أن تكون قادرًا على رؤية مهمتك المخصصة في القائمة بالتغييرات المتوقعة:

عيوب WP-Cron

الطريقة التي يتعامل بها WordPress مع وظائف cron تضمن تشغيل المهمة ولكنها لا تسمح لك بتحديد متى ، كما قلنا ، يتم التحقق عندما يقوم زائر بتحميل صفحة من موقع الويب الخاص بك.

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

استضافة موقع الويب الخاص بك مع Pressidium

ضمان استرداد الأموال لمدة 60 يومًا

اطلع على خططنا

في حالة وجود موقع ويب مشهور ، ستواجه قدرًا كبيرًا من حركة المرور بسبب التنفيذ المتزامن لعدد كبير من المهام. قد يستهلك هذا موارد الخادم الخاص بك ويؤثر على الأداء أو حتى يتسبب في توقف موقع الويب الخاص بك.

في حالة موقع ويب صغير ، مما يعني عددًا قليلاً من الزوار ، لن يتم تشغيل wp-cron كثيرًا ، لذلك قد يتم تأجيل بعض وظائف cron المهمة لوقت كافٍ لإنشاء آثار جانبية ، مثل عدم أخذ نسخ احتياطية كافية ، أو تأخير تحديث البعض البيانات التي يتم احتسابها في وظيفة cron.

قم بتعطيل WP-Cron

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

إذا لم يكن تعطيل WP-Cron خيارًا مقدمًا بالفعل من قبل مزود الاستضافة ، فإليك كيفية القيام بذلك بنفسك.

افتح wp-config.php ، الموجود أسفل المجلد الجذر للتثبيت ، باستخدام المحرر المفضل لديك وابحث عن الأسطر المتعلقة ببادئة جدول قاعدة البيانات. بعد ذلك مباشرة ، أدخل هذا السطر:

 // /** * WordPress Database Table prefix. * * You can have multiple installations in one database if you give each * a unique prefix. Only numbers, letters, and underscores please! */ $table_prefix = 'wN0b9WQk_'; define('DISABLE_WP_CRON', 'true');

يعد هذا أمرًا إلزاميًا إذا كنت تريد استخدام برنامج جدولة أكثر استقرارًا ، مثل خدمة Linux cron من أجل تشغيل wp-cron.php عندما يناسبك ذلك بشكل أفضل.

حل من جانب الخادم: خدمة Linux Cron

في Pressidium ، نستخدم Linux Crontab لتشغيل WP-Cron كل 5 دقائق. إنه مقدار الوقت المناسب الذي يضمن تنفيذ وظائفك المجدولة في الوقت المحدد وفي نفس الوقت تجنب زيادة التحميل على موقع WordPress الخاص بك. هذا لا يتداخل مع مجدول WP-Cron ، ولكن فقط مع آلية التشغيل.

استنتاج

نأمل أن تساعدك هذه المقالة في التعرف على WordPress Cron ، وما هو وكيف يعمل ، وكيفية إنشاء الجداول والمهام الخاصة بك. فكر مليًا فيما إذا كانت WP-Cron كافية لمتطلباتك ، قبل اختيار حلول أخرى من جانب الخادم.