Я использую пакет Laravel Excel в своем проекте.У меня проблема в том, что при импорте строк сценарий останавливается во время процесса с сообщением об ограничении использования памяти.Это действительно странно, учитывая, что я обрабатываю данные порциями, чтобы избежать проблем, связанных с памятью.Вот код:
public function process($file, Import $import)
{
$newArr = $this->getColumnNamesReformatted($file);
Excel::filter('chunk')->load($file)->chunk(1000, $this->setData($newArr, $import));
}
/**
* @param $newArr
* @param $import
* @return \Closure
*/
public function setData($newArr, $import)
{
return function ($results) use ($newArr, $import){
foreach ($results as $row){
$values = array_values($row->all());
$data = [
'import_id' => $import->id
];
foreach ($values as $key => $value){
if(in_array($newArr[$key], config('billing.columns'))){
$data[$newArr[$key]] = $value;
}
}
$data['usage_start_at'] = Carbon::parse($data['lineItem_UsageStartDate']);
$data['usage_end_at'] = Carbon::parse($data['lineItem_UsageEndDate']);
Record::create($data);
echo "|";
}
};
}
Я просто не могу понять, где утечка памяти.Кстати, проблема возникает только тогда, когда я запускаю код в Vagrant VM с 1 ГБ ОЗУ.Когда я запускаю один и тот же код локально - он выполняет все необходимые операции без проблем.