laravelでバッチ処理を実行する

未分類


夜間で、集計処理とか、月次データの作成とかしたいですよね・・・
したいです!って言う事で、今回はlaravelでバッチを作成する方法を調べます。

実装ステップとして

①バッチ処理を作成する。
②手動でバッチ処理を実行して結果を見る
③定時で実行を実装する。

この3ステップでいきます。

バッチ処理を作成ですが下記のコマンドでファイルを作成します。

php artisan make:command ○○Batch

バッチ名は、○○Batchとかにしとけばよいでしょう。
実行するとApp\Console\Commands配下にファイルが作成されます。
ファイルの中身はこんな感じです。

<?php

namespace AppConsoleCommands;

use IlluminateConsoleCommand;

class TestBatch extends Command
{
    /** 
     * The name and signature of the console command.
     *   
     * @var string
     */  
    protected $signature = 'command:name';

    /** 
     * The console command description.
     *   
     * @var string
     */  
    protected $description = 'Command description';

    /** 
     * Create a new command instance.
     *   
     * @return void
     */  
    public function __construct()
    {   
        parent::__construct();
    }   

    /** 
     * Execute the console command.
     *   
     * @return int 
     */  
    public function handle()
    {   
        return 0;
    }   
}

上から編集するのは3点となります。

  • $signature:artisanコマンドとして登録するときの識別子
  • $description:コマンドの説明
  • handle:実際の処理を記述

となります。

とりあえずテストをしようと思うのですが、何もこのままでは実行されないので下記のようにhandleにHello Worldを表示するように記述します。

    public function handle()
    {
        echo "Hello World!";
        return Command::SUCCESS;
    }

次に実行名を変更します。command:はとらないようにしましょう。
取ると、php artisan listでコマンド一覧に表示されなくなります。

  protected $signature = 'command:TestBatch';

これで下記のコマンドで実行できるようになります。

php artisan TestBatch

コマンドラインにHelloWorldが表示されれば成功です。