РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
1386 of 1392 menu

Метод allowFailures

Метод allowFailures класса Batch определяет поведение пакета заданий при возникновении ошибок. По умолчанию, если какое-либо задание в пакете завершается с ошибкой, выполнение всего пакета останавливается. При вызове allowFailures пакет продолжит выполнение оставшихся заданий, даже если некоторые из них потерпят неудачу. Метод не принимает параметров и возвращает текущий экземпляр пакета для цепочки вызовов.

Синтаксис

<?php Bus::batch([ // Jobs ])->allowFailures()->dispatch(); ?>

Пример

Давайте создадим пакет из трёх заданий, который продолжит выполнение даже при возникновении ошибок:

<?php namespace App\Http\Controllers; use App\Jobs\ProcessDataJob; use App\Jobs\SendEmailJob; use App\Jobs\GenerateReportJob; use Illuminate\Support\Facades\Bus; class BatchController extends Controller { public function createBatch() { $batch = Bus::batch([ new ProcessDataJob(1), new SendEmailJob('user@example.com'), new GenerateReportJob(2024), ])->allowFailures()->dispatch(); echo $batch->id; } } ?>

Результат выполнения кода:

"batch-1234567890"

Пример

Рассмотрим пакет, в котором некоторые задания могут завершиться с ошибкой:

<?php namespace App\Http\Controllers; use App\Jobs\ImportUsersJob; use App\Jobs\ImportProductsJob; use App\Jobs\ImportOrdersJob; use Illuminate\Support\Facades\Bus; use Illuminate\Support\Facades\Log; class BatchController extends Controller { public function importBatch() { $batch = Bus::batch([ new ImportUsersJob('users.csv'), new ImportProductsJob('products.csv'), new ImportOrdersJob('orders.csv'), ])->allowFailures() ->then(function ($res) { Log::info('Batch completed with failures: ' . $res->failedJobs); }) ->catch(function ($exception) { Log::error('Batch failed completely: ' . $exception->getMessage()); }) ->dispatch(); echo $batch->id; } } ?>

Результат выполнения кода:

"batch-9876543210"

Пример

Используем allowFailures с дополнительными методами для отслеживания прогресса пакета:

<?php namespace App\Http\Controllers; use App\Jobs\OptimizeCacheJob; use App\Jobs\ClearLogsJob; use App\Jobs\ReindexSearchJob; use Illuminate\Support\Facades\Bus; class BatchController extends Controller { public function maintenanceBatch() { $batch = Bus::batch([ new OptimizeCacheJob(), new ClearLogsJob(), new ReindexSearchJob(), ])->allowFailures() ->then(function ($res) { echo "Batch processed with failures: " . $res->failedJobs; }) ->progress(function ($res) { echo "Progress: " . $res->progress() . "%"; }) ->dispatch(); return $batch->id; } } ?>

Результат выполнения кода:

"batch-5678901234"

Смотрите также

  • метод then,
    который выполняет коллбэк после завершения пакета
  • метод catch,
    который обрабатывает ошибки в пакете
  • метод finally,
    который всегда выполняется после завершения пакета
  • метод cancel,
    который отменяет выполнение пакета
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить