Атрибут timeout
Атрибут timeout класса Job позволяет ограничить время выполнения задания в очереди. Если задание не завершится в течение указанного времени, оно будет помечено как неудачное и, при необходимости, повторно поставлено в очередь. Атрибут применяется непосредственно к классу задания и принимает целочисленное значение в секундах.
Синтаксис
<?php
class MyJob implements ShouldQueue
{
public $timeout = 30;
}
?>
Пример
Давайте создадим задание, которое должно выполниться за 10 секунд:
<?php
namespace AppJobs;
use IlluminateContractsQueueShouldQueue;
class QuickJob implements ShouldQueue
{
public $timeout = 10;
public function handle()
{
sleep(5);
echo "Job completed successfully";
}
}
?>
Результат выполнения кода:
"Job completed successfully"
Пример
Давайте создадим задание, которое превышает лимит времени выполнения:
<?php
namespace AppJobs;
use IlluminateContractsQueueShouldQueue;
class SlowJob implements ShouldQueue
{
public $timeout = 3;
public $tries = 2;
public function handle()
{
sleep(5);
echo "This will not be executed";
}
}
?>
Результат выполнения кода:
"Job failed due to timeout"
Пример
Давайте используем атрибут timeout с динамическим расчетом времени:
<?php
namespace AppJobs;
use IlluminateContractsQueueShouldQueue;
class DynamicTimeoutJob implements ShouldQueue
{
public $timeout;
public function __construct($timeout)
{
$this->timeout = $timeout;
}
public function handle()
{
echo "Executing with timeout: " . $this->timeout;
}
}
?>
Результат выполнения кода:
"Executing with timeout: 45"
Смотрите также
-
атрибут
tries,
который определяет количество попыток выполнения задания -
атрибут
backoff,
который задает задержку между повторными попытками -
атрибут
maxExceptions,
который ограничивает количество исключений до сбоя -
метод
handle,
который содержит логику выполнения задания