Метод withoutOverlapping
Метод withoutOverlapping применяется к запланированным заданиям
в классе Schedule и предотвращает запуск нового экземпляра задания,
если предыдущий экземпляр всё ещё выполняется. Это полезно для задач,
которые могут выполняться дольше, чем интервал их запуска, например,
обработка большого объёма данных или синхронизация с внешними API.
Метод принимает один параметр - время истечения блокировки в минутах,
по умолчанию равное 10 минутам.
Синтаксис
<?php
Schedule::command($command)->withoutOverlapping($expiresAt);
?>
Пример
Давайте запланируем выполнение команды 'emails:send' каждую минуту,
но предотвратим её перекрытие с помощью withoutOverlapping:
<?php
namespace App\Console;
use Illuminate\Console\Scheduling\Schedule;
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;
class Kernel extends ConsoleKernel
{
protected function schedule(Schedule $schedule)
{
$schedule->command('emails:send')
->everyMinute()
->withoutOverlapping();
}
}
?>
Пример
Давайте запланируем выполнение задания каждые пять минут с блокировкой
на 30 минут, если предыдущий запуск всё ещё выполняется:
<?php
namespace App\Console;
use Illuminate\Console\Scheduling\Schedule;
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;
class Kernel extends ConsoleKernel
{
protected function schedule(Schedule $schedule)
{
$schedule->command('report:generate')
->everyFiveMinutes()
->withoutOverlapping(30);
}
}
?>
Пример
Давайте запланируем выполнение задания на выполнение задачи с кастомной
функцией и установим блокировку на 15 минут:
<?php
namespace App\Console;
use Illuminate\Console\Scheduling\Schedule;
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;
class Kernel extends ConsoleKernel
{
protected function schedule(Schedule $schedule)
{
$schedule->call(function () {
echo "Processing data...";
})->hourly()->withoutOverlapping(15);
}
}
?>
Смотрите также
-
метод
command,
который планирует выполнение Artisan команды -
метод
job,
который планирует выполнение задания -
метод
call,
который планирует выполнение произвольной функции -
метод
schedule:run,
который запускает все запланированные задания