پیشرفته
·
۱۰ دقیقه مطالعه
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 بهکار میرود — کارهایی که زمان میبرند و نباید درخواست را قفل کنند.