2011-06-27 36 views
3

我使用PHPExcel生成Excel報告:如何解決PHPExcel內存不足錯誤?

  • 我有一個報告,這大約是600KB
  • 該報告有15張
  • 每片含有大約200行12列。
  • 一個工作表包含公式。
  • 我正在使用PHPExcel進行閱讀和寫作。
  • 我使用亞馬遜免費的網絡層服務器
  • 我有大約600MB RAM的服務器

的問題是,這一進程寫入Excel文件被殺(由於內存不足)

我該怎麼辦?是否有其他Excel庫可用?我想要一個具有讀寫功能的庫。

有沒有解決內存不足問題的另一種方法?

回答

1

我很難相信通過PHPExcel運行的600kb文件會佔用600MB的內存。這可能只是分配給PHP的內存耗盡。您可以通過以下方法之一增加可用於PHP腳本內存:

  • 添加memory_limit = 16M到php.ini文件(推薦,如果你有機會) 憑藉超級用戶權限,你可以使用sed的UTIL在基於Linux/Unix的系統,以增加64M的內存。不要忘記正確地找到你的php.ini文件! sed -i 's/memory_limit = .*/memory_limit = 64M/' /etc/php5/apache2/php.ini
  • 添加ini_set('memory_limit', '16M');到PHP腳本
+0

好吧,我不使用網絡interface..I我在命令行中運行phpexcel項目的根文件夾添加到php_value memory_limit 16M .htaccess文件..它只是從本地數據庫中獲取數據並將其寫入excel文件中。我沒有在任何地方使用網絡,因此「將php_value memory_limit 16M添加到.htaccess文件中」沒有意義。 commad行訪問也我將不得不設置memory_limit?我在我的本地機器上測試了代碼,它大約需要258 MB RAM。這裏是我的memory_test代碼.http://pastebin.com/Lb4jZwiB –

+0

好的,但你仍然可以使用前兩種方法中的任何一種,當您從命令行運行腳本時,還可以使用以下標誌啓動它們:-d memory_limit = 300M' –

+1

但在我的cli/php.ini文件中,memory_limit設置爲-1,並且它也表示最大內存量腳本可能會消耗(128MB) ; http://php.net/memory-limit memory_limit = -1 –

相關問題