تكرار السؤال: …
الإجابة المختصرة
بإنشاء ملف تكوين في /etc/supervisor/conf.d يحدد أمر queue:work، وعدد العمليات، والتشغيل التلقائي مع النظام وإعادة التشغيل الفوري عند الانهيار.
الشرح
لا يجوز تشغيل php artisan queue:work مباشرة في سطر الأوامر لأنه سيتوقف فور إغلاق الـ SSH. تقوم أداة Supervisor بإدارة العمليات كخدمة خلفية نظامية (Daemon)؛ تراقب العمال على مدار الساعة، وتعيد تشغيل أي عامل ينتهي بسبب timeout أو خطأ في الذاكرة فوراً، وتعيد تشغيلهم تلقائياً عند إعادة تشغيل السيرفر.
مثال بالكود
[program:laravel-worker]
process_name=%(program_name)s_%(process_num)02d
command=php /var/www/app/artisan queue:work redis --sleep=3 --tries=3
autostart=true
autorestart=true
user=www-data
numprocs=8
redirect_stderr=true
stdout_logfile=/var/www/app/storage/logs/worker.logأخطاء شائعة
- تشغيل عمال الـ Supervisor بحساب المستخدم root بدلاً من مستخدم خادم الويب www-data.
أسئلة متابعة
- ما الفرق الجوهري بين أمر php artisan queue:work وأمر queue:listen؟
- كيف تصمم طوابير متعددة ذات أولويات مختلفة (High, Default, Low) في Laravel؟