2013-11-27 52 views
0

我沒有具體問題。我想聽聽關於記憶問題的想法和技巧。導出大量數據和內存問題

比方說,我有:

  • 100萬件產品上的產品表產品名稱表
  • 100 000產品名稱產品說明表
  • 200 000產品圖片
  • 100 000產品說明在產品圖片表上

我想將它們導出到excel文件。我如何在一個普通的服務器上做到這一點。

我應該查詢所有產品並加入表格,還是使用極限和偏移量,並且像50 000次那樣做?

我應該循環mysql結果並將數據每隔一段時間保存到一個文件中,然後將它們結合在一起?

我應該創建多個較小的Excel文件並在最後將它們結合起來嗎?

所以真正的問題是你使用什麼技術來防止有太大的mysql結果,太大的變量大小(將整個mysql數據保存到一個數組),太大的excel變量數據(創建一個巨大的excel vs 。創建多個小組合並)。

PS。這些想法不必與我給你的優秀例子相關聯。我想學習如何處理大量的數據。

+0

首先,取決於您是要創建真正的Excel BIFF(.xls)還是OfficeOpenXML(.xlsx)文件,或者是否使用簡單的逗號分隔值(csv)文件來滿足您的需要:如果是後者,那麼當你從數據庫中讀取結果而不是在內存中構建任何大型數組時,你會寫每一行 –

回答

0

插入您的phpmyadmin的config.inc.php

ini_set('memory_limit','512M'); // set memory to match your available RAM. 
set_time_limit(0); // unlimit script time to run 

打開瀏覽器的頂部這些行,運行導出到Excel。離開瀏覽器直到完成。

如果您想要自定義報告,那麼只需查詢所有數據(如果您的RAM有大量剩餘空間,則沒有問題),然後執行所需的報告。在運行之前,在代碼頂部插入上面的行。

+1

我正在尋找一種方法來解決使用不同技術的內存問題。我認爲最糟糕的方式是繼續做錯事情,只是爲了增加內存限制。 – unska