В Laravel задания (jobs) по умолчанию обрабатываются последовательно. Но иногда требуется запустить несколько заданий параллельно и дождаться их выполнения перед продолжением логики. Для этого используется метод
Bus::batch().Batch позволяет объединить набор заданий в "пакет", запускать их одновременно и отслеживать статус выполнения всего набора. Это особенно полезно, если нужно обработать много однотипных задач (например, экспорт данных или массовую отправку уведомлений).
use Illuminate\Bus\Batch;
use Illuminate\Support\Facades\Bus;
use Throwable;
Bus::batch([
new ProcessPodcast(1),
new ProcessPodcast(2),
new ProcessPodcast(3),
])->then(function (Batch $batch) {
// Все задания выполнены успешно
})->catch(function (Batch $batch, Throwable $e) {
// Какое-то из заданий завершилось ошибкой
})->finally(function (Batch $batch) {
// Выполнится в любом случае
})->dispatch();
👉 @web_craft | #laravel
