نظام طوابير Laravel واستخدام Supervisor في الإنتاج

يوليو 1, 2025

🚀 نظام Queue & Jobs في Laravel

هناخدك خطوة خطوة من أول إنشاء الجداول لحد ما تشغّل الطوابير في Production عن طريق Supervisor.

الخطوة 1: إنشاء جداول الطوابير

اكتب الأوامر دي:

php artisan queue:table
php artisan queue:failed-table
php artisan queue:batches-table
php artisan migrate

الخطوة 2: تراقب Jobs اللي فشلت

اكتب:

php artisan queue:failed

هيطلعلك جدول فيه ID، الاتصال، الرسالة، والتاريخ.

الخطوة 3: إعادة تشغيل Jobs الفاشلة

php artisan queue:retry 5      # لإعادة تشغيل Job برقم معين
php artisan queue:retry all    # كل الـfailed jobs

الخطوة 4: مسح الـ failed jobs

php artisan queue:flush

الخطوة 5: حذف الـ failed jobs القديمة

php artisan queue:prune-failed         # أقدم من 24 ساعة
php artisan queue:prune --hours=48         # أقدم من 48 ساعة

الخطوة 6: إعداد retries مع backoff

مثال:

php artisan queue:work --tries=2
php artisan queue:work --queue=notification --tries=2 --backoff=1200
php artisan queue:work --queue=notification --tries=2 --backoff=10,20

الخطوة 7: Job batches

لو عندك شغل كتير زي إرسال 10,000 إيميل، الفكرة هنا إنك تجمعهم في batch وتتابعهم مع إمكانية إعادة محاولات، وعمل إشعار في الآخر.

الخطوة 8: تشغيل الطوابير في Production باستخدام Supervisor

Supervisor هي اللي بتشغل وتراقب الـ queue workers لو حصل crash. مثال config:

[program:laravel-worker]
process_name=%(program_name)s_%(process_num)02d
command=php /var/www/html/artisan queue:work --tries=3 --backoff=30 --timeout=120 --max-jobs=1000 --max-time=3600 --sleep=3 --reset=1
autostart=true
autorestart=true
user=www-data
numprocs=2
redirect_stderr=true
stdout_logfile=/var/log/supervisor/laravel-worker.log

احفظه في /etc/supervisor/conf.d/laravel-worker.conf وبعدين:

sudo supervisorctl reread
sudo supervisorctl update
sudo supervisorctl start laravel-worker:*

المدونة

استكشف أقوى تقنيات Laravel الحديثة: Inertia.js، View Creators، وHLS خطوة بخطوة

يوليو 27, 2025

أدوات قوية تقدر تستخدمها لتطوير تطبيقات Laravel بشكل احترافي: Inertia.js v2، وView Creators، وحزمة Laravel HLS لبث الفيديوهات بأمان. ١. Inertia.j...

تذكير بالمهام مع Laravel وMongoDB

يونيو 30, 2025

📌 بناء تطبيق تذكير مهام المقال ده بيشرح إزاي نعمل تطبيق Laravel يستخدم MongoDB علشان يذكرك بالمهمات بتاعتك، مع تسجيل دخول، CRUD، وتذكير بالإيميلات...

نظام طوابير Laravel واستخدام Supervisor في الإنتاج

يوليو 01, 2025

🚀 نظام Queue & Jobs في Laravel هناخدك خطوة خطوة من أول إنشاء الجداول لحد ما تشغّل الطوابير في Production عن طريق Supervisor. الخطوة 1: إنشاء...

إتقان التكرار غير المتزامن في JavaScript باستخدام Array.fromAsync()

يوليو 27, 2025

🔍 ما هي Array.fromAsync() بالضبط؟ Array.fromAsync() هي دالة static من كائن Array، شبيهة بالدالة Array.from()، لكن الفرق الجوهري هو أن Array.fromAs...

Laravel 12.19: استخدام Attributes لتنظيم الـ Query Builder

يوليو 07, 2025

Laravel 12.19: استخدام Attributes تنظّم Query Builder في Laravel 12.19، دلوقتي تقدر تستخدم Attribute اسمه #[UseEloquentBuilder] علشان تحدد Query Bu...

إزاي OAuth بيشتغل

يونيو 29, 2025

إزاي OAuth بيشتغل؟ OAuth هو بروتوكول بيخلّي التطبيقات تقدر تدخل على بياناتك بطريقة آمنة من غير ما تدّيهم الباسورد بتاعك. زي مثلًا لو حبيت تطبيق ينشر...