پیشرفته · ۱۰ دقیقه مطالعه

Queue و Job — کارهای پس‌زمینه

کارهای زمان‌بر (ارسال ایمیل، پردازش تصویر، فراخوانی API) نباید کاربر را منتظر بگذارند. صف (Queue) آن‌ها را به پس‌زمینه می‌برد.

ساخت Job

php artisan make:job ProcessPayment
class ProcessPayment implements ShouldQueue {
    public function __construct(public Order $order) {}
    public function handle(): void {
        // کار سنگین اینجا
    }
}

ارسال به صف

ProcessPayment::dispatch($order);
ProcessPayment::dispatch($order)->delay(now()->addMinutes(5));

کاربر فوراً پاسخ می‌گیرد؛ کار در پس‌زمینه انجام می‌شود.

اجرای worker

php artisan queue:work

در تولید با Supervisor یا Horizon (مانیتورینگ صف با Redis).

تنظیم درایور

در .env: QUEUE_CONNECTION=redis (یا database). همین سایت آرنا از Redis برای صف استفاده می‌کند.

مزیت

صف برای: ایمیل، اعلان، گزارش، و در نقشهٔ آرنا اجرای کد کاربر (Judge0) و راه‌اندازی لب‌های Docker به‌کار می‌رود — کارهایی که زمان می‌برند و نباید درخواست را قفل کنند.

برای ثبت پیشرفت و کسب XP وارد شو.

ورود به میدان
→ Event و Listener
Mail، Notification و Cache ←