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

Метод delay

Метод delay применяется к экземпляру класса PendingDispatch, который возвращается при вызове статического метода dispatch у класса задачи (Job). Он позволяет задать временную задержку перед тем, как задача будет отправлена в очередь на выполнение. Первый и единственный параметр метода - это длительность задержки, которая может быть передана в виде целого числа (количество секунд) или экземпляра класса DateTimeInterface. Метод возвращает тот же объект PendingDispatch, что позволяет использовать цепочки вызовов.

Синтаксис

<?php SomeJob::dispatch($arguments)->delay($delay); ?>

Пример

Давайте отправим задачу в очередь с задержкой в 60 секунд:

<?php namespace App\Jobs; use Illuminate\Bus\Queueable; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Foundation\Bus\Dispatchable; use Illuminate\Queue\InteractsWithQueue; use Illuminate\Queue\SerializesModels; class SendNotificationJob implements ShouldQueue { use Dispatchable, InteractsWithQueue, Queueable, SerializesModels; protected $userId; public function __construct($userId) { $this->userId = $userId; } public function handle() { // Логика отправки уведомления пользователю echo "Notification sent to user: " . $this->userId; } } ?>
<?php use App\Jobs\SendNotificationJob; use Illuminate\Support\Facades\Route; Route::get('/send-notification/{id}', function ($id) { SendNotificationJob::dispatch($id)->delay(60); return "Job dispatched with 60 seconds delay"; }); ?>

Результат выполнения кода при обращении к маршруту, например, /send-notification/5:

"Job dispatched with 60 seconds delay"

Пример

Отправим задачу с задержкой до конкретного момента времени, используя класс Carbon:

<?php use App\Jobs\SendNotificationJob; use Carbon\Carbon; use Illuminate\Support\Facades\Route; Route::get('/schedule-notification/{id}', function ($id) { $delayUntil = Carbon::now()->addHours(2); SendNotificationJob::dispatch($id)->delay($delayUntil); return "Job scheduled at " . $delayUntil->toDateTimeString(); }); ?>

Результат выполнения кода при обращении к маршруту, например, /schedule-notification/10:

"Job scheduled at 2026-09-07 16:00:00"

Пример

Метод delay часто используется в цепочках вместе с другими методами класса PendingDispatch, такими как onQueue и onConnection:

<?php use App\Jobs\SendNotificationJob; use Illuminate\Support\Facades\Route; Route::get('/chain-dispatch/{id}', function ($id) { SendNotificationJob::dispatch($id) ->onQueue('high') ->onConnection('redis') ->delay(30); return "Job dispatched to high queue with 30 seconds delay"; }); ?>

Результат выполнения кода при обращении к маршруту, например, /chain-dispatch/3:

"Job dispatched to high queue with 30 seconds delay"

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

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