РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
1387 of 1392 menu

Класс Queue

Класс Queue в Laravel предоставляет унифицированный интерфейс для работы с различными драйверами очередей. Он позволяет отправлять задания в очередь, управлять их выполнением и отслеживать состояние очередей. Класс доступен через фасад Queue или через контейнер зависимостей. Основные методы включают отправку заданий, установку задержек, проверку размера очереди и управление соединениями.

Синтаксис

<?php use Illuminate\Support\Facades\Queue; Queue::push($job); Queue::later($delay, $job); Queue::size($queue); Queue::connection($name); ?>

Пример

Давайте отправим простое задание в очередь по умолчанию:

<?php namespace App\Http\Controllers; use Illuminate\Support\Facades\Queue; use App\Jobs\SendEmailJob; class QueueController extends Controller { public function sendEmail() { $job = new SendEmailJob('user@example.com'); Queue::push($job); return response()->json(['message' => 'Job dispatched']); } } ?>

Результат выполнения кода:

"Job dispatched"

Пример

Отправим задание с задержкой в 10 минут:

<?php namespace App\Http\Controllers; use Illuminate\Support\Facades\Queue; use App\Jobs\SendEmailJob; use Carbon\Carbon; class QueueController extends Controller { public function delayedEmail() { $job = new SendEmailJob('user@example.com'); $delay = Carbon::now()->addMinutes(10); Queue::later($delay, $job); return response()->json(['message' => 'Job scheduled']); } } ?>

Результат выполнения кода:

"Job scheduled"

Пример

Проверим размер очереди перед отправкой:

<?php namespace App\Http\Controllers; use Illuminate\Support\Facades\Queue; use App\Jobs\ProcessDataJob; class QueueController extends Controller { public function processWithCheck() { $queue = 'processing'; $size = Queue::size($queue); if ($size < 100) { $job = new ProcessDataJob(['user' => 'test']); Queue::onQueue($queue)->push($job); return response()->json(['message' => 'Job added', 'size' => $size]); } return response()->json(['message' => 'Queue is full', 'size' => $size]); } } ?>

Результат выполнения кода:

"Job added"

Пример

Отправим задание на конкретное соединение и очередь:

<?php namespace App\Http\Controllers; use Illuminate\Support\Facades\Queue; use App\Jobs\ReportJob; class QueueController extends Controller { public function customConnection() { $job = new ReportJob(['type' => 'daily']); Queue::connection('redis') ->onQueue('reports') ->push($job); return response()->json(['message' => 'Job dispatched to custom queue']); } } ?>

Результат выполнения кода:

"Job dispatched to custom queue"

Смотрите также

  • метод dispatch,
    который отправляет задание в очередь
  • класс PendingDispatch,
    который управляет отправленным заданием
  • метод push,
    который добавляет задание в очередь
  • метод later,
    который добавляет задание с задержкой
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить