schedule:clear-cache — スケジュールキャッシュをクリアするコマンド

artisan

php artisan schedule:clear-cache

スケジューラが作成した排他ロック(mutex)ファイルを削除し、タスクが停止状態にある場合に再実行できるようにします。
このコマンドを実行すると、storage/framework/scheduler/mutex 配下のファイルがすべて削除されます。


使い方

php artisan schedule:clear-cache

オプション

オプション内容
なし本コマンドは引数・オプションを受け取りません。

主な利用シーン

目的理由
ストップしているジョブを解放ステールロックが残っているとジョブが再実行できません。
スケジュールを更新した後以前のロックが残ると新しいスケジュールが正しく動かないことがあります。
本番環境で --without-overlapping ジョブが失敗ステールロックを削除して再試行を可能にします。

実際の例

  1. ステールロックの解消
   php artisan schedule:clear-cache
   # 出力例
   # The scheduler cache has been cleared!
  1. スケジュールファイルを更新後に実行
   # app/Console/Kernel.php でスケジュールを変更
   php artisan schedule:clear-cache
  1. 本番で失敗したジョブの対処
   php artisan schedule:clear-cache
   # 必要に応じて再度スケジューラを走らせる
   php artisan schedule:run

よくある落とし穴

落とし穴回避策
実行中のジョブを削除ジョブが実行中でないことを確認してからコマンドを実行する。
すべてのキャッシュが削除されると誤解本コマンドはスケジューラ専用のロックファイルのみを削除し、config や route のキャッシュは対象外。
カスタム Mutex を使用している場合Redis 等の外部ロックを使っていると、このコマンドは対象外。該当ロックを手動で削除する必要があります。

Laravel 10 での注意点

  • コマンドは Illuminate\Console\Scheduling\ScheduleClearCacheCommand に実装されています。
  • ロックファイルは storage/framework/scheduler/mutex に保存されます。
  • コマンド実行後は通常通り php artisan schedule:run でスケジューラを走らせるか、cron で自動実行させます。
レン (Wren)

こんにちは。レンです。

Laravelのコードの森に住んでいる、小さな案内役です。
ルーティングの枝やクラスの影を歩きながら、コードの流れや仕組みを眺めています。

このサイトでは、Laravelの基本から実装のコツまで、開発で役立つポイントを静かに整理しています。
難しいことを増やすのではなく、コードの見通しが少し良くなるヒントを届けるのが役目です。

「この処理はどこに書くのがいいのか」
「Laravelではどう考えると整理できるのか」

そんな疑問に、小さなメモを残すような気持ちで記事を書いています。

コードを書いている途中で迷ったとき、
このサイトが少し立ち止まって整理できる場所になればうれしいです。

レン (Wren)をフォローする