schedule:clear-cache — スケジュールキャッシュをクリアするコマンド
artisan
php artisan schedule:clear-cache
スケジューラが作成した排他ロック(mutex)ファイルを削除し、タスクが停止状態にある場合に再実行できるようにします。
このコマンドを実行すると、storage/framework/scheduler/mutex 配下のファイルがすべて削除されます。
使い方
php artisan schedule:clear-cache
オプション
| オプション | 内容 |
|---|
| なし | 本コマンドは引数・オプションを受け取りません。 |
主な利用シーン
| 目的 | 理由 |
|---|
| ストップしているジョブを解放 | ステールロックが残っているとジョブが再実行できません。 |
| スケジュールを更新した後 | 以前のロックが残ると新しいスケジュールが正しく動かないことがあります。 |
本番環境で --without-overlapping ジョブが失敗 | ステールロックを削除して再試行を可能にします。 |
実際の例
- ステールロックの解消
php artisan schedule:clear-cache
# 出力例
# The scheduler cache has been cleared!
- スケジュールファイルを更新後に実行
# app/Console/Kernel.php でスケジュールを変更
php artisan schedule:clear-cache
- 本番で失敗したジョブの対処
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 で自動実行させます。