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 之类的东西上,否则您将遇到同样的问题 - 一台服务器对另一台服务器一无所知,因为它们每个都有自己的一组文件。