Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
9
Help us understand the problem. What are the problem?

More than 3 years have passed since last update.

@tech31

Laravelのスケジューラでの排他制御(withoutOverlapping)について

問題

ある日、アクセス集中によりサーバーがダウンする事態に見舞われた。
その後、サーバーを再起動してもバッチ処理が正しく実行されない問題が発生した。
バッチ処理はLaravelのスケジューラにより定期実行している。

原因

吐かれていたログは、

No scheduled commands are ready to run.

そういえばスケジューラで
多重起動の防止の設定をしていた。(withoutOverlapping()の指定。)

// 例
$schedule->command('emails:send')->withoutOverlapping();

どうやら、処理が正常に終了しなかったため、ロックファイルが残り続けており、その後の処理がスキップされてしまっていたようだった :cry:

対策

/storage/framework配下にロック用のファイル(schedule-XXXXXXXX)が生成されていたので、削除した。まぁ、それだけ。

その後、バッチは元気に仕事を再開してくれました :thumbsup_tone2:

補足:ロック用のファイルのファイル名

    /**
     * Get the mutex name for the scheduled command.
     *
     * @return string
     */
    public function mutexName()
    {
        return 'framework/schedule-'.sha1($this->description);
    }
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
9
Help us understand the problem. What are the problem?