Метод later
Метод later класса Queue позволяет добавить задачу в очередь с указанной задержкой перед выполнением. Первым параметром передаётся время задержки, вторым - имя класса задачи или объект задачи, третьим - данные для задачи (необязательно), четвёртым - имя очереди (необязательно). Время можно указать как число секунд или экземпляр DateTimeInterface. Возвращает идентификатор добавленной задачи.
Синтаксис
<?php
Queue::later($delay, $job, $data = '', $queue = null);
?>
Пример
Давайте отправим задачу с задержкой в 10 секунд:
<?php
namespace App\Http\Controllers;
use App\Jobs\ProcessEmail;
use Illuminate\Support\Facades\Queue;
class QueueController extends Controller
{
public function index()
{
$job = new ProcessEmail(['to' => 'user@example.com']);
$delay = 10;
$jobId = Queue::later($delay, $job);
echo $jobId;
}
}
?>
Результат выполнения кода:
"Id123456"
Пример
Отправим задачу с задержкой до указанной даты и времени:
<?php
namespace App\Http\Controllers;
use App\Jobs\SendReport;
use Illuminate\Support\Facades\Queue;
use Carbon\Carbon;
class QueueController extends Controller
{
public function schedule()
{
$job = new SendReport(['period' => 'monthly']);
$delay = Carbon::now()->addHours(2);
$jobId = Queue::later($delay, $job, 'reports', 'high');
echo $jobId;
}
}
?>
Результат выполнения кода:
"Id789012"
Пример
Использование метода с передачей строки вместо объекта задачи:
<?php
namespace App\Http\Controllers;
use Illuminate\Support\Facades\Queue;
class QueueController extends Controller
{
public function index()
{
$job = 'App\Jobs\ProcessPodcast';
$data = ['id' => 42];
$delay = 5;
$jobId = Queue::later($delay, $job, $data);
echo $jobId;
}
}
?>
Результат выполнения кода:
"Id345678"