تخطَّ إلى المحتوى

queue:work

تشغيل عامل طابور queue:work

queue:work يشغّل عاملًا (Worker) يبقى قيد التشغيل ويلتقط المهام المُرسَلة للطابور وينفّذها واحدة تلو الأخرى في الخلفية.

بلا هذا الأمر تبقى المهام المُرسَلة عبر dispatch() متكدّسة بالطابور بلا تنفيذ أبدًا. في بيئة الإنتاج يجب إبقاء العامل يعمل باستمرار عبر مدير عمليات مثل Supervisor، لأنه يتوقّف تلقائيًا عند أي تغيير بكود التطبيق ويحتاج إعادة تشغيل.

الصياغة

php artisan queue:work [connection] [options]

📄 مثال

# تشغيل عامل على الاتصال الافتراضي
php artisan queue:work

# طوابير بأولوية: emails أولًا ثم default
php artisan queue:work --queue=emails,default

# حد أقصى 3 محاولات لكل مهمة
php artisan queue:work --tries=3

# إنهاء المهمة إن تجاوزت 30 ثانية
php artisan queue:work --timeout=30

# ينفّذ كل ما بالطابور ثم يتوقّف (مفيد بحاويات Docker)
php artisan queue:work --stop-when-empty

أهم الخيارات

الخيارالوظيفة
--queue=a,bيحدّد قائمة طوابير بترتيب أولوية المعالجة
--tries=nأقصى عدد محاولات قبل اعتبار المهمة فاشلة (0 = محاولات بلا نهاية)
--timeout=nأقصى ثوانٍ لتنفيذ مهمة واحدة قبل إيقافها قسرًا
--stop-when-emptyينهي العملية بعد تفريغ الطابور بدل الانتظار لمهام جديدة
--onceينفّذ مهمة واحدة فقط ثم يتوقّف

💡 نصائح عملية

  • queue:listen كان أمرًا قديمًا مشابهًا لكنه مهجور لصالح queue:work الأكفأ — استخدم queue:work دائمًا بالمشاريع الحديثة

⚠️ أخطاء شائعة

  • نسيان تشغيل queue:work أثناء التطوير فتبدو المهام وكأنها لا تُنفَّذ أبدًا رغم أنها فعليًا بالطابور تنتظر

خصائص ذات صلة

🎓 تريد فهم الصورة الكاملة خطوة بخطوة؟ ابدأ من مسار LARAVEL الكامل بالعربي.