从xlxs文件插入10000行时浏览器抛出错误“糟糕,出了点问题”-Laravel

时间:2019-11-11 10:32:27

标签: php laravel

我正在上传具有10000行的xlxs文件。在上传过程中,浏览器抛出错误糟糕,出现了问题。但是,当我刷新页面时,它显示xlxs工作表上的所有行均已插入到db中。

请问该问题是什么?请解决或优化此错误的最佳方法是什么?

控制器

   $get_group = $request->get('group');
   $get_group = $request->get('group');
   if(empty($get_group))
    {
        return redirect()->back()->with('error', 'No group has been selected.');
    }
    $explode_get_group = implode(' ', $get_group);
    $selectedGroup = Group::where('id',$explode_get_group)->first();   
    if($request->file('imported-file'))
    {
             $path = $request->file('imported-file')->getRealPath();                
             $data = Excel::load($path, function($reader)
             {
                $reader->calculate(false);

             })->get();                 
            if(($request->file('imported-file')->getClientOriginalExtension()) != 'xlsx')
           {
           return redirect('/customer/view')->with('error','File Format may not be supported');
           }

       else{

       if(!empty($data) && $data->count())
       {
         foreach ($data->toArray() as $row)
         {
           if(!empty($row))
           {
             $dataArray[] =
             [
               'name' => array_get($row, 'name'),
               'phone' =>array_get($row, 'phone'),
               'user_id' => Auth::user()->id      
             ];
           }
       }

       if(isset($row['phone']) == 0)
       {
           return redirect('/customer/view')->with('error','Failed to upload file');
       }

       //  if(!empty($dataArray))
       else
       {

          $selectedGroup->customers()->createMany($dataArray);                    
          return redirect('/customer/view')->with('status','Contacts successfully added');
       }
      }
       }
    }
     else {
   return redirect('/customer/view')->with('error','No file was uploaded. Please upload a file');

        }

1 个答案:

答案 0 :(得分:0)

每当我尝试上载需要解析的大文件时,我都会上载该文件并运行后台任务来处理该文件的解析。可能是您收到超时错误等。通常,您应该能够在日志中看到完整的错误。另一件事是使用try / catch,以便您可以捕获引发的任何异常并从那里查看。