我创建了一个小功能来导入CSV文件(约5K行)。导入工作正常,还返回了底部的视图,因此似乎所有代码都已执行。我在数据库中看到所有行都已插入。
但是,重定向后页面仍继续在浏览器中加载(无响应),而且我发现PHP仍在使用大量的内存。我不知道发生了什么,有人知道吗?
public function store(Request $request)
{
$file = $request->file('eurofiberupload')->getRealPath();
$handle = fopen($file, 'r');
$firstrow=true;
DB::table('upload')->truncate();
while($row=fgetcsv($handle, 500, ';'))
{
if($firstrow===true)
{
$firstrow=false;
continue;
}
Upload::create([
'field0'=> $row[0],
'field1' => utf8_encode($row[1]),
'field2' => str_replace('NULL', 0, $row[3]),
'field3' => floatval($row[4]),
'field4' => floatval($row[5]),
'field5' => $row[6],
'field6' => $row[7],
'field7' => floatval($row[8]),
]);
}
unset($row);
fclose($handle);
return redirect('/home')->with('success', 'All good!');
}
答案 0 :(得分:0)
您可以测试返回的行是否为null或具有值。修改您的循环循环并执行以下操作:
{
$file = $request->file('eurofiberupload')->getRealPath();
$handle = fopen($file, 'r');
$firstrow=true;
DB::table('upload')->truncate();
while(($row=fgetcsv($handle, 500, ';'))!=null)
{
if($firstrow===true)
{
$firstrow=false;
continue;
}
Upload::create([
'field0'=> $row[0],
'field1' => utf8_encode($row[1]),
'field2' => str_replace('NULL', 0, $row[3]),
'field3' => floatval($row[4]),
'field4' => floatval($row[5]),
'field5' => $row[6],
'field6' => $row[7],
'field7' => floatval($row[8]),
]);
}
unset($row);
fclose($handle);
return redirect('/home')->with('success', 'All good!');
}
您可以尝试