環境
Mac M1
Laravel9
php8
やりたかったこと
Laravel タスクスケジューラで設定した時間間隔でスケジュールが実行されているかを確認したかった。
解決方法
crontabに登録をして、スケジューラを実行させる。
1.cronエントリーを追加
crontab -e
をターミナルで叩くと、vim画面が出てくる
user_name ~ % crontab -e
2.何分おきにcronを実行させるかを登録する
* * * * * cd project名までのフルパス &&
/usr/local/bin/docker compose exec コンテナ名 php /var/www/project名/artisan schedule:run >> /dev/null 2>&1
上記はcd project名までのフルパス
で作業ディレクトリに移動して、指定した時間でartisanコマンドを叩くというもの。
注意点としては、dockerコマンドとartisanコマンドを使うためにはフルパスで書かないと動かない、、、
ちなみに * * * * *
で時間を指定できるようになっています。(デフォルトだと1分単位で実行される)
分 時 日 月 曜日
* * * * * command
分(0-59)
時(0-23)
日(1-31)
月(1-12)
曜日(0-6) ※0は日曜日
3.crontab -l
コマンドで登録されているcronを確認
crontab -l
コマンドでさっき登録したものが表示されたら設定完了。
docker compose exec コンテナ名 php artisan schedule:work
補足
Laravel8以降だと以下のコマンドを打つだけで確認することができる。
docker compose exec コンテナ名 php artisan schedule:work