تكرار السؤال: …
الإجابة المختصرة
بتمرير أسماء الطوابير بالترتيب لأمر تشغيل العامل php artisan queue:work --queue=high,default,low؛ حيث يُفرغ الطابور الأول بالكامل قبل الانتقال للتالي.
الشرح
إذا كانت كل المهام في طابور واحد، فإن رفع 10 آلاف تقرير ثقيل سيؤخر إرسال رمز تسجيل الدخول للمستخدم لعدة ساعات. الحل هو توجيه المهام الحساسة لطابور خاص عبر onQueue('high') وتشغيل العامل مع تحديد ترتيب الأولوية. يضمن ذلك خدمة طلبات الـ high فوراً في ثوانٍ حتى لو كان طابور الـ low يحتوي ملايين العمليات المؤجلة.
مثال بالكود
SendOtpCode::dispatch($code)->onQueue('high');
GenerateMonthlyPdf::dispatch($report)->onQueue('low');أخطاء شائعة
- توجيه جميع المهام لنفس الطابور الافتراضي 'default' في المشاريع الكبيرة.
أسئلة متابعة
- ما الفرق الجوهري بين أمر php artisan queue:work وأمر queue:listen؟
- كيف تعمل طوابير المهام (Queues) في Laravel وما فائدة واجهة ShouldQueue؟