一度以下の設定を行った後は、Laravelでコマンドを作って”app\Console\Kernel.php”にコマンドと実行頻度を登録すればOK。
コード
# Homesteadでタスクスケジュール機能をONにする
# Homestead.yaml
sites:
- map: project_name.app # ホスト名
to: /home/vagrant/code/project_name/public # web上に公開するディレクトリ
schedule: true # Laravelのタスクスケジュール機能を使う
# 設定の読み込み
$ vagrant reload --provision
# cronの設定ファイルを作る
$ cp /etc/crontab /etc/cron.d/my_cron
# cronの設定ファイルをviなどで編集
$ vi /etc/cron.d/my_cron
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
# m h dom mon dow user command
17 * * * * root cd / && run-parts --report /etc/cron.hourly
25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
# 以下を追加
* * * * * root cd ~/code/project_name && php artisan schedule:run >> /dev/null 2>&1
# cronの実行
$ sudo service cron restart
# cronのログを出力
$ vi /etc/rsyslog.d/50-default.conf
# コメントアウトを外す
# cron.* /var/log/cron.log
$ sudo service rsyslog restart
Laravel 7.x タスクスケジュール
https://readouble.com/laravel/7.x/ja/scheduling.html
Laravel 7.x Laravel Homestead
https://readouble.com/laravel/7.x/ja/homestead.html
Cronの使い方とテクニックと詰まったところ