Laravelでバッチ処理を実現する方法
Laravelには、「Command」というものが用意されており、それを使うことで、バッチ処理ができます。
用途としては、どっかのWebサイトから情報を収集して自分のDBに登録するとかですね。
Linuxが持つcronに登録することもできるように作られているので定期実行も可能です。
Laravelでバッチ処理を用意する為の大まかな流れ
Laravelでバッチ処理を用意する為の大まかな流れは、以下のようになります。
- artisanコマンドでコマンドファイルを作成
- コマンドファイルを編集する
- artisan コマンドでコマンドファイルを実行する
- 定期実行したい場合はcron用の設定を行う
詳細に書いていきます。
artisanコマンドでコマンドファイルを作成
以下のコマンドで、Laravelコマンドのガワが作れます。
php artisan make:command クラス名
例)
php artisan make:command getHtml
コマンドファイルを編集する
先述のコマンドを実行すると、
app/Console/Commands/
配下にコマンドファイルが作成されます。
ファイル名は、make:command コマンドで指定した「クラス名」です。
中身は以下のようになっています。
protected $signature = 'command:name';
「commad:name」の部分が実行するときに使うコマンド名です。
protected $description = 'Command description';
ディスクリプションです。
public function handle()
ここに処理を書いていきます。
artisan コマンドでコマンドファイルを実行する
/app/Console/Commands/ファイル.php
の中の、
protected $signature = '●●●';
↑上記「●●●」に設定したコマンドを実行します。
例)
↑上記「●●●」が、「command:gethtml」だった場合は、
artisan コマンドが使えるディレクトリで(laravelのトップディレクトリ)
以下の様に実行します。
$ php artisan commnad:gethtml
定期実行したい場合はcron用の設定を行う
具体例
Laravel バッチ処理(app/Console/Commands/)の注意点
注意点1.外部ライブラリのは外のフォルダに置きましょうね〜
[Laravel] app/Console/Commands/ 配下にライブラリなどのフォルダを配置するとphp artisan コマンド実行時に実行されてしまう
コメント