Я использую league / csv , чтобы проанализировать файл csv
и затем выгрузить эти данные в базу данных.
Структура выглядит следующим образом:
$csv = Reader::createFromPath($csv_file_path, 'r');
$csv->setOutputBOM(Reader::BOM_UTF8);
$csv->addStreamFilter('convert.iconv.ISO-8859-15/UTF-8');
$csv->setHeaderOffset(0);
$csv_header = $csv->getHeader();
$loop = true;
while($loop){
$stmt = (new Statement())
->offset($offset)
->limit($limit)
;
$records = $stmt->process($csv);
foreach ($records as $record)
{
$rec_arr[] = array_values($record);
}
$records_arr = $service->trimArray($rec_arr);
if(count($records_arr)>0)
{
foreach($records_arr as $ck => $cv){
//map data and insert into database
}
}else{
$loop = false;
}
}
В настоящее время я реализую эту логику в очереди laravel.Он успешно вставляет весь набор данных, но не останавливает процесс .
Он застревает с сообщением processing
.Однако, если я удалил этот цикл while
, он будет остановлен с сообщением processed
.
Итак, я думаю, что это должно быть чем-то, что я реализую там какую-то плохую логику.
Ищете идею для решения этой проблемы.