目次
バッチ処理の実行
LaravelではArtisanが提供するコマンドに加え、独自のカスタムコマンドを作成することができます。作成されたコマンドはapp/Console/Commandsディレクトリに保存します。
コマンドの生成
$ php artisan make:command SendEmails
Console command created successfully.
このコマンドを実行することにより、Commandsディレクトリに新しいコマンドクラスを作成されます。
作成されたコマンドがこちら↓
$signatureでコマンドの名前と使い方を英数字で設定し、$descriptionでコマンドの実行内容について日本語で記載できます。
続いてhandle function内でコマンド実行内容を書いていきます。
おすすめとしてはこのconsoleコマンド内ではコードは軽くして、アプリケーションサービスで処理を書き、コマンド内で呼び出す形の方がコードの再利用を増やせるため良いです。
まずはアプリケーションサービスにコントローラを作成しましょう。
$ php aritsan make:controller Api/SendMailController
アプリケーションサービスで記述したfunctionは以下の方法で呼び出せます。
コマンドの作成ができたら以下ファイルでコマンドの登録をします。app/Console/Kernel.php
ここでeveryTenMinutes()などで何分、何時間おきに処理を実行するか設定することができます。
他にも
・everyMinutes() :毎分
・hourly() :毎時間
・daily() :毎日深夜12時
など様々な時間のスケジュールがあります。
ここまででコマンド実行をすることができます。
$ php artisan command:sendEmails
何かしらの処理が走る
cronの設定
MacOSにてcrontabを起動する時はこのコマンドで起動することができます。
terminal
$ crontab -e
初めてcrontabを起動する時は何も記述されてないためこのような形で起動されます。
ここにバッチ処理を登録します。
00 * * * * php artisanまでのパス/artisan command:sendEmails
これでスケジューラで設定した通り、10分毎にバッチが走るようになりました。
まとめ
今回はLaravelでのバッチ処理の方法とバッチ処理 の登録方法を説明しました。
何分か毎に自動で処理が実行されるはすごく便利だと思うので、参考にしてみてもらえればと思います。