2015-03-02 77 views
0

我试图使用http://www.maatwebsite.nl/laravel-excel/docsMySQL的超时/崩溃发送大量的数据

每单列一个XLS文档发送562行的数据是,需要保存用户,但是,当这四处奔波180- 200行Laravel崩溃。

这可能是Laravel,我的XAMPP服务器(在哪里运行脚本)或数据库本身?

 $path = Input::file('file')->getRealPath(); 


    Excel::load($path, function($reader) { 

     $data = $reader->get(); 

     foreach($data as $row) { 

      $rows = User::where('email', $row['e_postadress'])->count(); 

      if($rows == 0) 
      { 
       if($row['status'] == "Administratör") 
       { 
        $admin = 1; 
       } 
       else 
       { 
        $admin = 0; 
       } 

       $user = new User; 

       $user->email = $row['e_postadress']; 
       $user->fname = $row['fornamn']; 
       $user->lname = $row['efternamn']; 

       $user->save(); 
      } 

     } 

    }, 'UTF-8'); 
+2

我们可以看你有没有做到这一点的代码?崩溃如何体现自己?你有错误吗? – halfer 2015-03-02 14:21:34

+0

也许它超过了PHP最大执行时间? – 2015-03-02 14:21:39

+0

是的,这可能是一个超时问题,但也是一个内存或溢出问题。这一切都取决于你看到的错误。 – 2015-03-02 14:23:03

回答

0

嗨:)我有解决这个问题,使用MySQL命令:LOAD DATA INFILE

http://dev.mysql.com/doc/refman/5.1/en/load-data.html

您可以在几秒钟内添加大文件。但我认为你必须改变你的.xls为.csv

例(笨语法,请适应了laravel):

 $dataload = 'LOAD DATA LOCAL INFILE "Path_of_the_file" 
        REPLACE 
        INTO TABLE gc_csv CHARACTER SET "latin1" 
        FIELDS TERMINATED BY "\t" 
        IGNORE 1 LINES 
       '; 

    return (bool)$this->db->query($dataload); 
+0

OP想要通过php – Forien 2015-03-02 14:38:05

+0

是的,而且?他可以使用SQL与PHP ... 我有更新我的消息解释与代码 – Xenofexs 2015-03-02 14:42:38