ハマログ

株式会社イーツー・インフォの社員ブログ

Laravelタスクスケジュールの多重起動制御のロックを解除する

LaravelのApp\Console\Kernelでタスクスケジュールを実行する際に、タスクが多重起動しないように指定することができます。withoutOverlappingメソッドです。
$schedule->command('emails:send')->withoutOverlapping();
この際、裏側ではLaravelはキャッシュの仕組みを利用してロックファイルを管理しています。

タスクが異常終了した場合、ロックファイルが残り続けてしまい、処理の再実行が上手く動かない場合があります。 ロックファイルの有効期限は24時間です。

ロックファイルはコマンド実行で削除することができます。
artisanでscheduke:clear-cacheを実行します。
> sudo -u apache php artisan schedule:clear-cache
Deleting mutex for: '/usr/bin/php' 'artisan' task:sample
ロックファイルが存在しない場合
> sudo -u apache php artisan schedule:clear-cache
No mutex files were found.
また、ロックファイルの有効期限を指定することもできます。
withoutOverlappingメソッドの引数に、ロックファイルの有効期限を分単位で渡します。

以下の例は、ロックの有効期限を5分で指定しています。
$schedule->command(SampleTask::class)->everyMinute()->withoutOverlapping(5);
artisanLaravelscheduletask

  kaneko tomo   2023年1月7日


関連記事

hibernateで単純なSELECT文の順読み込み

こんにちは 最近なくしたパスモが飯能で見つかったが、取りに行くのを断念しました、…

スプレッドシートで日付/時刻を入力したとき、値がずれる・見慣れない形式になる

スプレッドシートにて、下記ショートカットキーにて日付/時刻を入力したとき、値がず…

iptablesのログを出力して確認する方法

仕事でiptablesのログを出して調査する機会がありました。 過去何回か同じよ…


← 前の投稿

次の投稿 →