laravel 6 - 没有重叠的任务调度器仍然与 heroku 重叠
laravel 6 - task schedule withoutOverlapping still overlapp with heroku
我尝试 运行 没有重叠的任务,但即使我添加
任务仍然每分钟调用一次
->withoutOverlapping()
这是我的任务我有一个睡眠(240)来强制任务超过 1 分钟,但邮件仍然每分钟发送一次
$schedule->call(function() {
$user = User::find(4);
Mail::to('john.doe@gmail.com')->queue(new AccountConfirmation($user));
sleep(240);
})->name('update_game')->withoutOverlapping(20);
我将 heroku 与调度程序一起使用,这里是日志: 任务“update_game”运行 每分钟一次,即使任务需要超过 1 分钟(睡眠(240)) 我不知道为什么
Heroku 调度程序在每次运行时都会启动一个全新的 dyno(基本上是一个服务器)。
->withoutOverlapping()
只适用于当前服务器,所以它什么都不做,因为下一分钟另一个服务器是运行.
你也想调用 ->onOneServer()
,但要做到这一点,你需要将 file
驱动程序移到缓存系统的 redis
之类的东西上,否则您将遇到同样的问题 - 一台服务器对另一台服务器一无所知,因为它们每个都有自己的一组文件。
我尝试 运行 没有重叠的任务,但即使我添加
任务仍然每分钟调用一次->withoutOverlapping()
这是我的任务我有一个睡眠(240)来强制任务超过 1 分钟,但邮件仍然每分钟发送一次
$schedule->call(function() {
$user = User::find(4);
Mail::to('john.doe@gmail.com')->queue(new AccountConfirmation($user));
sleep(240);
})->name('update_game')->withoutOverlapping(20);
我将 heroku 与调度程序一起使用,这里是日志:
Heroku 调度程序在每次运行时都会启动一个全新的 dyno(基本上是一个服务器)。
->withoutOverlapping()
只适用于当前服务器,所以它什么都不做,因为下一分钟另一个服务器是运行.
你也想调用 ->onOneServer()
,但要做到这一点,你需要将 file
驱动程序移到缓存系统的 redis
之类的东西上,否则您将遇到同样的问题 - 一台服务器对另一台服务器一无所知,因为它们每个都有自己的一组文件。