Задания задержки Laravel не работают с пакетами

#php #laravel

Вопрос:

Я пытаюсь отложить задание, которое добавляется в пакет в моем приложении Laravel, но при попытке добавить отложенное задание возникают ошибки, чего мне не хватает в моем коде?

 /**
 * Create chunked CSVs
 */
protected function createChunkedCSVs(Request $request)
{

    try {

      // get the CSV we stored
      $data = file($request->csv);

      // chunk the CSV into smaller csv's
      $chunks = array_chunk($data, 1000);

      // header and batch
      $header = [];
      $batch  = Bus::batch([])->dispatch();

      // latest form release
      $release = $this->getApplicationFormVersion();

      // begin chunking
      foreach ($chunks as $key => $chunk) {
        $data = array_map('str_getcsv', $chunk);

        if ($key === 0) {
          $header = $data[0];
          unset($data[0]);
        }

        $batch->add(new CustomersCsvProcess($data, $header, $release)->delay(Carbon::now()->addMinutes(5)));
      }

      // return the batch
      return $batch;

    } catch (Exception $e) {

      return null;

    }

}
 

Комментарии:

1. Попробуйте удалить ->dispatch() из переменной $batch, а затем после каждого запуска запустите $batch->>dispatch();

2. Я получаю синтаксическую ошибку: ParseError: syntax error, unexpected '-amp;>' (T_OBJECT_OPERATOR), expecting ')' in file /Users/USER/Sites/PROJECT/app/Http/Controllers/CsvController.php on line 93 , так как я добавляю задержку в пакет, например: $batch->add(new CustomersCsvProcess($data, $header, $release)->delay(Carbon::now()->addMinutes(5)));

3. @Devyn после небольшой настройки я получаю сообщение об ошибке: Call to undefined method IlluminateBusPendingBatch::add() с $batch->dispatch()->delay() после моего каждого?