こんにちは、Webプログラマの篠田です。
今日は、Laravel5.6で作成したプログラムをcronで実行するためのバッチプログラムを作成方法をご紹介します。
「artisan」でバッチ用スケルトンを作成する
Laravel5.6で、バッチ用スケルトンファイルを作成するコマンドは、下記のとおりです。
$ php artisan make:command [クラス名]
実行された「artisan」コマンドで、「[クラス名]」ファイルが自動的に作成されます。
作成されたファイルは「app/Console/Commands」ディレクトリに保存されます。
<?php
namespace App\Console\Commands;
use Illuminate\Console\Command;
class [クラス名] 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 mixed
*/
public function handle()
{
//
}
}
これで、雛形となるクラスファイルが作成できました。
「artisan」コマンドとして登録しよう
クラスファイルを作成するだけでは、利用できません。
Laravelに、バッチ処理を認識させるための登録が必要になります。
登録するファイルは「app/Console/Kernel.php」になります。
<?php
namespace App\Console;
use Egulias\EmailValidator\Exception\CommaInDomain;
use Illuminate\Console\Scheduling\Schedule;
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;
class Kernel extends ConsoleKernel
{
/**
* The Artisan commands provided by your application.
*
* @var array
*/
protected $commands = [
Commands\[クラス名]::class,
];
追記場所は、配列「$commands」になります。
これで、コンソール内での実行準備が整いました。
スケルトンファイルを設定しよう
スケルトンファイルに、プログラムを書く前に初期設定を行っていきましょう。
実行コマンドを定義する
Laravelの「artisan」コマンドで、バッチ処理を実行する際に必要となる識別子を追記します。
設定は、「protected $signature」に行います。
初期値は「command:name」となっています。
例として、「set:test_cron」とします。
protected $signature = 'set:test_cron';
コロン区切りでグルーピング
「$signature」では「コロン」を使うことで、グルーピングをすることができます。
複数のバッチ処理を管理する際に、グルーピングが活躍しそうですね。
もちろん「コロン」を利用(グルーピング)しない記述も可能です。
コマンドの説明文を書こう
変数「$description」には、コマンドの説明文(description)を記入することを管理しやすくすることができます。
設定の仕方は下記のとおりです。
protected $description = "説明文説明文説明文説明文";
説明文は、「php artisan list」コマンドで確認することができます。
$ php artisan list set: set:test_cron 説明文説明文説明文説明文
プログラムの保守・運用を考えると、説明文がある方が迷わず保守・運用ができるようになるので、積極的に活用していきたいですね。
実際のプログラムは「handle」内に記述しよう
ここまでが、Laravelでバッチ処理を作成するための準備でした。
具体的な、バッチ処理のプログラムは「handle」メソッド内に記述します。
記述が終われば、バッチ処理の完成です。
あとは、cronで下記のコマンドを実行させましょう。
php artisan set:test_cron
まとめ
Laravelを利用して、バッチ処理も簡単に作成することができます。
この他にも、引数を利用した方法や、コンストラクタを利用した方法などがありますので、改めてご紹介できればと思います。
現場の業務フローに寄り添ったWebシステムをお求めなら、私たちALAKIにご相談ください。
ALAKIは経営者様が感じている問題点と、実際にWebシステムを利用される現場スタッフ様が直面している課題を、弊社システムエンジニアが丁寧に聞き取り、お客様と共にシステムを作り上げていきます。
業務改善が実現できるWebシステムをお求めの方は、是非ALAKIにご相談ください。











