Laravel でも、バッチ処理を実行することができます。
実装する流れとしては、artisan コマンドを利用して、バッチ処理を実装していきます。
バッチプログラムの追加
下記のコマンドを実行して、バッチ処理プログラムのひな形を生成します。
1 |
$ php artisan make:command BatchSample |
生成コマンドを実行すると、
./app/Console/Commands 配下に、対象ファイルが生成されます。
artisan コマンドで、生成されたファイルは、下記の内容になっています。
BatchSample.php
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 |
<?php namespace App\Console\Commands; use Illuminate\Console\Command; class BatchSample extends Command { /** * The name and signature of the console command. * * @var string */ protected $signature = 'app:batch-sample'; /** * The console command description. * * @var string */ protected $description = 'Command description'; /** * Execute the console command. */ public function handle(): void { echo 'run batch.'; } } |
バッチ処理の実行
Laravel で、バッチ処理を実行するには、最初に、対象バッチファイルの登録状態を確認します。
具体的には、下記のコマンドを実行することで、確認することができます。
1 |
$ php artisan list |
このコマンド実行後に表示される一覧の中に、「app:batch-sample」があります。
これが、Laravel のバッチを実行するときに指定する名称になります。
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 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
[hoge@sv sample]$ php artisan list Laravel Framework 10.5.1 Usage: command [options] [arguments] Options: -h, --help Display help for the given command. When no command is given display help for the list command -q, --quiet Do not output any message -V, --version Display this application version --ansi|--no-ansi Force (or disable --no-ansi) ANSI output -n, --no-interaction Do not ask any interactive question --env[=ENV] The environment the command should run under -v|vv|vvv, --verbose Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug Available commands: about Display basic information about your application clear-compiled Remove the compiled class file completion Dump the shell completion script db Start a new database CLI session docs Access the Laravel documentation down Put the application into maintenance / demo mode env Display the current framework environment help Display help for a command inspire Display an inspiring quote list List commands migrate Run the database migrations optimize Cache the framework bootstrap files serve Serve the application on the PHP development server test Run the application tests tinker Interact with your application up Bring the application out of maintenance mode app app:batch-sample Command description auth auth:clear-resets Flush expired password reset tokens cache cache:clear Flush the application cache cache:forget Remove an item from the cache cache:prune-stale-tags Prune stale cache tags from the cache (Redis only) cache:table Create a migration for the cache database table channel channel:list List all registered private broadcast channels config config:cache Create a cache file for faster configuration loading config:clear Remove the configuration cache file db db:monitor Monitor the number of connections on the specified database db:seed Seed the database with records db:show Display information about the given database db:table Display information about the given database table db:wipe Drop all tables, views, and types env env:decrypt Decrypt an environment file env:encrypt Encrypt an environment file ・・・省略・・・ |
名称が特定できたら、下記のコマンドでバッチを実行します。
1 |
$ php artisan app:batch-sample |
実行結果
バッチを実行すると、指定したテストメッセージが出力されます。
このように、Laravel のバッチ処理は、簡単に実装することができ、
また、実行することも簡単にできます。
時間などを指定したバッチ処理の場合には、crontab を組み合わせることで、さまざまな処理に対応することができます。