#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()
после моего каждого?