2015-03-02 25 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