محمود موسى2 نشر 31 يناير 2023 أرسل تقرير نشر 31 يناير 2023 سلام عليكم سؤالي هو عن كيفية مناداة الqueue بطريقة صحيحة في الcron jobs بالنسبة للتوقيتات لكي يتم مناداة كلا من queue:work, queue:restart, queue:retry all ما هو الcron job الخاصة بكل كوماند؟ اقصد ما هو توقيتهم بصيغة الcron 2 اقتباس
1 محمد الخطيب9 نشر 1 فبراير 2023 أرسل تقرير نشر 1 فبراير 2023 (معدل) يرجى ملاحظة أن 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 فبراير 2023 بواسطة محمد خطيب اقتباس
1 بلال زيادة نشر 31 يناير 2023 أرسل تقرير نشر 31 يناير 2023 لجدولة مهام 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 Sam Ahw نشر 31 يناير 2023 أرسل تقرير نشر 31 يناير 2023 في النسخ الحديثة من لارافل، أتاحت للمبرمجين سهولة في التعامل مع جدولة الأعمال، فبدلاً من إنشاء مجدول 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). في حال كان لديك مشكلة أخرى، أرجو منك ذكر المزيد من التفاصيل وتوضيح سؤالك. 1 اقتباس
السؤال
محمود موسى2
سلام عليكم
سؤالي هو عن كيفية مناداة الqueue بطريقة صحيحة في الcron jobs بالنسبة للتوقيتات لكي يتم مناداة كلا من queue:work, queue:restart, queue:retry all
ما هو الcron job الخاصة بكل كوماند؟ اقصد ما هو توقيتهم بصيغة الcron
3 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.