こんにちは、せぃゆーです。
今日はLaravelでcronを設定するときにどのぐらいの時間で終わるかわからないタスクで多重起動を防止するための記述があったので投稿します。
withoutOverlappingメソッド
laravelのcronではデフォルトでは現在実行中のタスクでも再度実行する時間になった場合には実行してしまいます。
現在実行中の場合にはcronを実行させたくないといった場合にwithoutOverlappingを使います
$schedule->command('command:run)';
上記の設定の場合コマンドが毎分実行されてしまいます。
しかしコマンドの内容によっては次の時間に実行されると困るやコマンドがどのくらいかかるかわからないなどの問題時にwithoutOverlappingメソッドを利用することで、コマンドが終了していない場合には実行しないようにすることができます。
$schedule->command('command:run')->withoutOverlapping();
withoutOverlappingメソッドの引数
withoutOverlappingメソッドでは引数として、多重起動の防止をするまで、何分間経過させるかを指定できます。時間切れまでデフォルトは、24時間です 。
$schedule->command('command:run')->withoutOverlapping(10);
コメント