مقاله

چرا Queue لازم است، تفاوت sync و async، driverها و سناریوهای واقعی: ایمیل، پردازش تصویر و نوتیفیکیشن.

صف (Queue) در Laravel چیست؟ — راهنمای مفاهیم و کاربرد عملی

صف (Queue) در Laravel چیست؟ — راهنمای مفاهیم و کاربرد عملی

کاربر فرم را submit می‌کند — ۸ ثانیه صبر می‌کند تا ایمیل خوش‌آمد، PDF فاکتور و sync CRM تمام شود. تجربه بد. Queue یعنی «فوراً بگو ثبت شد» و بقیه را worker در پس‌زمینه انجام دهد. در Laravel این الگو first-class است — از مستندات Queue تا Horizon برای مانیتورینگ.

مشکل بدون Queue

  • timeout HTTP
  • کاربر منتظر کار غیرضروری
  • خطا در وسط = نیمه‌کار ماندن
  • spike ترافیک = crash

با Queue چه می‌شود؟

  1. Request منطق اصلی را انجام می‌دهد (ذخیره سفارش)
  2. Job به صف push می‌شود (ارسال ایمیل)
  3. Response سریع برمی‌گردد
  4. Worker جدا job را اجرا می‌کند

Driverهای رایج

Driverکاربرد
syncتوسعه — فوری همزمان
databaseشروع ساده، بدون Redis
redisproduction پیشنهادی — Redis و Horizon
sqsAWS serverless

تنظیم .env

QUEUE_CONNECTION=database
# production:
# QUEUE_CONNECTION=redis

راهنمای env. migration جدول jobs:

php artisan queue:table
php artisan migrate

Worker

php artisan queue:work

روی سرور با Supervisor همیشه روشن — Cron و Schedule مرتبط ولی جدا.

چه کارهایی Queue شوند؟

  • ایمیل و SMS
  • resize تصویر / FFmpeg
  • webhook به سرویس خارجی
  • گزارش PDF سنگین
  • index در موتور جستجو

نه: validation و ذخیره اصلی transaction — آن‌ها synchronous بمانند.

Queue و Event

Listener می‌تواند ShouldQueue باشد — overlap مفهومی. Job صریح control بیشتری دارد — راهنمای Job.

جمع‌بندی

Queue = مقیاس و UX. بعدی: Job، Redis، failed jobs. کش هم مکمل است: بهینه‌سازی.

صف برای پروژه شما