2021-03-22
Laravel
Laravel8
Laravel8のジョブバッチ
3年前の記事です。
Laravelは古い情報は全く役に立たないので絶対に参考にしないでください。
コメントに新しい情報がないか確認してください。
https://laravel.com/docs/8.x/queues#job-batching
https://readouble.com/laravel/8.x/ja/queues.html#job-batching
Laravel8で追加されたジョブバッチだけど大量のジョブをまとめて実行することがないので使う場面がない。無理矢理使ってみてもあまり効果がない。ドキュメントの例程度では意味がなさそう。使うとしたら全ジョブの完了を待ってからなにかしたい時?
use App\Jobs\ImportCsv;
use Illuminate\Bus\Batch;
use Illuminate\Support\Facades\Bus;
use Throwable;
$batch = Bus::batch([
new ImportCsv(1, 100),
new ImportCsv(101, 200),
new ImportCsv(201, 300),
new ImportCsv(301, 400),
new ImportCsv(401, 500),
])->then(function (Batch $batch) {
// すべてのジョブが正常に完了
})->catch(function (Batch $batch, Throwable $e) {
// バッチジョブの失敗をはじめて検出
})->finally(function (Batch $batch) {
// バッチの実行が終了
})->name('Import CSV')->dispatch();
return $batch->id;