【Laravel】サーバ再起動でcronタスクスケジュールが実行されなくなった
目次
状況
サーバのcronを使ってschedule:runを実行させてjobを処理させていたんですが、ある時サーバを再起動したらjobが実行されなくなった。
そんな時に試してみる事
サーバ側の確認
crontabが設定されているか確認
#内容確認 crontab -e #一覧表示 crontab -l
cronが実行されているか確認
sudo systemctl status crond.service #CentOS7以前 sudo service crond status
cron再起動
sudo systemctl restart crond.service #CentOS7以前 sudo service crond restart
他に、cronが動かない原因として権限周りが結構関係している場合が多いが、今回は今まで動いていたので関係がない。
Laravel側の確認
直接schedule:runを実行してみる
php artisan schedule:run
今回このコマンドで以下のメッセージが表示された
No scheduled commands are ready to run.
Kernel.php内のスケジュールが毎分以外の場合や条件付きでスケジュールされていて実行するものがない場合にこう表示されるようです。
今回、cron側もLaravel側も正常に動いてるっぽいが、スケジュールが実行されない。。。
最後にキャッシュクリアしてみる。
php artisan cache:clear
環境によっては、以下のメッセージが表示されてクリアできない。
Failed to clear cache. Make sure you have the appropriate permissions.
これは、「storage/framework/cache/data」をクリアするコマンドなので、このディレクトリが存在しない場合、または、ファイルに対して権限がない場合に表示される。
今回はディレクトリは存在しているので、管理者権限で実行。
sudo php artisan cache:clear
クリアできた。
キャッシュクリアした途端スケジュールが実行され始めた。今回は、結局キャッシュが悪さしてました。
-
前の記事
【Laravel】キャッシュ関連をクリアしてもクラスファイルの変更が反映されない時 2021.09.27
-
次の記事
Laravelのイベントとリスナを非同期で実行してみる 2022.01.27
コメントを書く