我有一个 Laravel 的计划任务,定义如下,每 10 分钟运行一次。我还需要按需运行相同的作业,如果它已经在运行,则它不会重叠,或者如果按需作业正在运行,则阻止计划的作业开始运行。
/**
* Define the application's command schedule.
*
* @param \Illuminate\Console\Scheduling\Schedule $schedule
* @return void
*/
protected function schedule(Schedule $schedule)
{
$schedule->call(function () {
$job = new \App\Jobs\ImportJob();
$job->handle();
})->name('Import')->everyTenMinutes()->withoutOverlapping();
}
有没有一种简单的方法可以通过调度 API 实现这一点,或者作业是否应该处理自己的互斥标志?