اذهب إلى المحتوى
  • 0

ما هي الطريقة الصحيحة لمناداة queue في لارافل

محمود موسى2

السؤال

سلام عليكم

سؤالي هو عن كيفية مناداة الqueue بطريقة صحيحة في الcron jobs بالنسبة للتوقيتات لكي يتم مناداة كلا من queue:work, queue:restart, queue:retry all

 

ما هو الcron job الخاصة بكل كوماند؟ اقصد ما هو توقيتهم بصيغة الcron

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 1

يرجى ملاحظة  أن Queue worker هي عملية طويلة العمر (long-lived processes) ولا تتوقف حتى تقوم يدوياً بايقافها.

يمكنك تجريب ذلك بنفسك على السيرفر المحلي من خلال الأمر التالي:

php artisan queue:work

الطريقة الصحيحة لتشغيل Queues في لارفل، بحسب المستندات الرسميّة، هي باستخدام process monitor مثل Supervisor وذلك للتأكد من  أن Queue worker لا يتوقف عن العمل.

لاحظ أن استخدام cron job لتشغيل Queue worker يمكن أن يكون أقل كفاءة من استخدام process monitor، حيث لا تقوم  cron job تلقائيًا بإعادة تشغيل المهام الفاشلة أو إدارة عمليات عمال متعددة.
 ولذلك لا ينبغي تشغيل Queue worker من خلال cron job.
في الرابط التالي تجد شرحاً مفصلاً لآلية تكوين Supervisor لتشغيل Queue worker:
Supervisor Configuration

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

  • 1

لجدولة مهام cron لنظام طابور Laravel ، يمكنك استخدام الأمر php لتشغيل أوامر قائمة انتظار Artisan. فيما يلي تعبيرات وظيفة cron لكل أمر:

queue: work: يتم تشغيل هذا الأمر بشكل مستمر لمعالجة الوظائف الجديدة المضافة إلى قائمة الانتظار. يمكنك تشغيل هذا الأمر كل دقيقة في مهمة cron الخاصة بك للتأكد من أنه يعمل دائمًا:

* * * * * php /path/to/your/project/artisan queue:work

queue:restart ( إعادة التشغيل): يقوم هذا الأمر بإعادة تشغيل عامل قائمة الانتظار قيد التشغيل حاليًا. يمكنك تشغيل هذا الأمر كل ساعة للتأكد من إعادة تشغيل عامل قائمة الانتظار بانتظام:

0 * * * * php /path/to/your/project/artisan queue:restart

queue:retry all: (أعد محاولة الكل): يعيد هذا الأمر محاولة جميع المهام الفاشلة في قائمة الانتظار. يمكنك تشغيل هذا الأمر كل يوم في منتصف الليل لإعادة محاولة أي مهام فاشلة:

0 0 * * * php /path/to/your/project/artisan queue:retry all

ملاحظة: استبدل المسار

/path/to/your/project/

بالمسار الفعلي لمشروع Laravel الخاص بك.

لإضافة وظائف cron هذه ، يمكنك استخدام أداة crontab عن طريق تشغيل الأمر التالي في جهازك الطرفي: crontab -e. سيؤدي هذا إلى فتح ملف مهمة cron للتحرير ، ويمكنك إضافة التعبيرات لكل أمر واحدًا تلو الآخر ، كل في سطر جديد.

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

في النسخ الحديثة من لارافل، أتاحت للمبرمجين سهولة في التعامل مع جدولة الأعمال، فبدلاً من إنشاء مجدول cron خاص لتنفيذ مهمة محددة وإدارتها مباشرةً من الخادم، أتاح إطار العمل واجهة لمعالجة هذه الأوامر مباشرةً من خلال الشيفرة البرمجية.

بالنسبة لسؤالك، فالتوقيت الموجود ضمن Cron يمكنك استخدامه بنفس الصيغة من خلال الشيفرة البرمجية:

->cron('* * * * *');

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

->everyMinute();
->everyTwoMinutes();
->hourly();
->hourlyAt(17);
->daily();
...

وبالتالي لن تحتاج لتنفيذ الأوامر مثل queue:work بشكل مباشر، بل بدلاً من ذلك يمكنك جدولة queue بالشكل التالي:

$schedule->job(new Heartbeat)->everyFiveMinutes();

وجدولة المهام من خلال موجّه الأوامر أو الخادم بشكل مباشر تتم من خلال تنفيذ الأوامر بالشكل التالي:

* * * * * php /path/to/your/project/artisan queue:work

كما يمكنك قراءة المزيد من التفاصيل والأمثلة في التوثيق الرسمي في لارافل من قسم (جدولة المهام Task Scheduling).

في حال كان لديك مشكلة أخرى، أرجو منك ذكر المزيد من التفاصيل وتوضيح سؤالك.

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...