こんにちは、Webプログラマの篠田です。
今日は、Laravel5.6で作成したプログラムをcronで実行するためのバッチプログラムを作成方法をご紹介します。
この記事の目次
「artisan」でバッチ用スケルトンを作成する
Laravel5.6で、バッチ用スケルトンファイルを作成するコマンドは、下記のとおりです。
1 |
$ php artisan make:command [クラス名] |
実行された「artisan」コマンドで、「[クラス名]」ファイルが自動的に作成されます。
作成されたファイルは「app/Console/Commands」ディレクトリに保存されます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
<?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」になります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
<?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」とします。
1 |
protected $signature = 'set:test_cron'; |
コロン区切りでグルーピング
「$signature」では「コロン」を使うことで、グルーピングをすることができます。
複数のバッチ処理を管理する際に、グルーピングが活躍しそうですね。
もちろん「コロン」を利用(グルーピング)しない記述も可能です。
コマンドの説明文を書こう
変数「$description」には、コマンドの説明文(description)を記入することを管理しやすくすることができます。
設定の仕方は下記のとおりです。
1 |
protected $description = "説明文説明文説明文説明文"; |
説明文は、「php artisan list」コマンドで確認することができます。
1 2 3 |
$ php artisan list set: set:test_cron 説明文説明文説明文説明文 |
プログラムの保守・運用を考えると、説明文がある方が迷わず保守・運用ができるようになるので、積極的に活用していきたいですね。
実際のプログラムは「handle」内に記述しよう
ここまでが、Laravelでバッチ処理を作成するための準備でした。
具体的な、バッチ処理のプログラムは「handle」メソッド内に記述します。
記述が終われば、バッチ処理の完成です。
あとは、cronで下記のコマンドを実行させましょう。
1 |
php artisan set:test_cron |
まとめ
Laravelを利用して、バッチ処理も簡単に作成することができます。
この他にも、引数を利用した方法や、コンストラクタを利用した方法などがありますので、改めてご紹介できればと思います。
現場の業務フローに寄り添ったWebシステムをお求めなら、私たちALAKIにご相談ください。
ALAKIは経営者様が感じている問題点と、実際にWebシステムを利用される現場スタッフ様が直面している課題を、弊社システムエンジニアが丁寧に聞き取り、お客様と共にシステムを作り上げていきます。
業務改善が実現できるWebシステムをお求めの方は、是非ALAKIにご相談ください。