1時間に一回、1日一回何かしらの処理を定期的に実行したい場合があると思います。
※ランキングの更新やTwitterApiでコンテンツを定期的にツイートするなど
そういったときはLaravelの make:command が便利です。
この記事はエックスサーバーを利用している人向けの記事ですよ
大まかな流れ
- Laravelコマンドを作成する
- エックスサーバーのCron設定で定期的にコマンドを実行するように設定する
たったこれだけです!
では一つ一つ見ていきましょう。
実行したい処理(Laravelコマンド)を作成する
こちらからLaravelのカスタムコマンドの作り方が見れますので作成してみてください。
ここで確認してもらいたいことは作成したコマンドを実行するコマンドです。
先ほど紹介したページでは以下のコマンドで処理を実行できるようにしています。これはあなたが作成したものに置き換えてください。
php artisan text:command
エックスサーバーでcron設定する
cronの読み方は「クーロン」といいます。
crontab (クロンタブ、あるいはクローンタブ、クーロンタブとも)コマンドはUnix系オペレーティングシステム (OS) において、コマンドの定時実行のスケジュール管理を行うために用いられるコマンドである。
https://ja.wikipedia.org/wiki/Crontab
定期的にコマンドを実行するためのコマンドです。通常ではlinuxのターミナルなどで自分でコマンドを打って設定しなければなりませんが、エックスサーバーでは簡単に設定することができます。
エックスサーバーのサーバーパネルを開く
まずはエックスサーバーのサーバーパネルにログインしてください。
アカウント>Cron設定 を選択してください。
ここにどのようなタイミングで、どのコマンドを実行したいかを記載していきます。
どの場合もコマンドの部分は一緒なので説明しておきます。
cd プロジェクトフォルダのルート && php artisan test:command
プロジェクトフォルダのルートはlaravelプロジェクトの最上位フォルダのことです。下にappやpublicがあるフォルダになります。
Cronの設定方法の考え方が難しい人は設定例をいくつか書いておくので参考にしてください。
一時間に一回
分:0(毎時15分にしたいなら15を指定)
時間:*
日:*
月:*
曜日:*
30分に一回
分:*/30
時間:*
日:*
月:*
曜日:*
1日に一回(15時)
分:*
時間:15
日:*
月:*
曜日:*
3時間に一回
分:*
時間:*/3
日:*
月:*
曜日:*
こんな場合どう設定するの??という方はご気軽に質問してください!