我在项目中使用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 "|";
}
};
}
我似乎无法理解内存泄漏在哪里。顺便说一句-仅当我在具有1 GB RAM的Vagrant VM中运行代码时才会出现问题。当我在本地运行相同的代码时-它会完成所有必需的操作而没有任何麻烦。
答案 0 :(得分:0)
您是否尝试过增加php.ini中的“ memory_limit”。如果不尝试一次!
php -i | grep“ php.ini”
使用上述命令,您将获得已加载的配置文件。
增加memory_limit并重新启动Web服务器。