Laravelでバッチ処理

Laravel
スポンサーリンク

Laravelでバッチ処理を実現する方法

Laravelには、「Command」というものが用意されており、それを使うことで、バッチ処理ができます。

用途としては、どっかのWebサイトから情報を収集して自分のDBに登録するとかですね。

Linuxが持つcronに登録することもできるように作られているので定期実行も可能です。

Laravelでバッチ処理を用意する為の大まかな流れ

Laravelでバッチ処理を用意する為の大まかな流れは、以下のようになります。

  1. artisanコマンドでコマンドファイルを作成
  2. コマンドファイルを編集する
  3. 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のバッチ処理で外部HTMLを取得する

Laravel バッチ処理(app/Console/Commands/)の注意点

注意点1.外部ライブラリのは外のフォルダに置きましょうね〜

[Laravel] app/Console/Commands/ 配下にライブラリなどのフォルダを配置するとphp artisan コマンド実行時に実行されてしまう

コメント