PHPExcel記憶體洩漏問題解決方法 PHP

2022-10-09 12:09:08 字數 575 閱讀 6542

使用 phpexcel 來生成 excel 文件是比較消耗記憶體的,有時候可能會需要通過乙個迴圈來把大資料切分成若干個小的 excel 文件儲存來避免記憶體耗盡。

然而 phpexcel 存在 circular references 的情況(貌似在最新的 1.6.5 版本中仍然沒有去解決這個問題),如果在一次 http 請求過程中反覆多次構建 phpexcel 及 phpexcel_writer_excel5 物件例項來完成多個 excel 文件生成操作的話,所有被構建的物件例項都無法在 http 請求結束之前及時釋放,從而造成記憶體洩漏。

解決辦法是在 phpexcel_worksheet 類中增加方法:

**如下:

public function destroy()

}並在 phpexcel 類中增加方法:

**如下:

public function destroy()

}然後在需要資源**的地方顯式的呼叫 phpexcel::destroy() 來處理迴圈引用的問題。注意 __destruct() 方法是在物件被認為可以被釋放的時候才會被呼叫,所以迴圈引用的處理不能放到 __destruct() 來進行。

PHPExcel 記憶體洩漏問題

網上關於記憶體洩露的問題大都是再說匯出的時候,可這次我遇到的偏偏是匯入的時候。當然,只是針對excel2007格式的文件。我測試過,乙個大概31列 500行的文件,實行匯入之後,php會報如下錯誤 fatal error allowed memory size of 209715200 bytes ...

PHPExcel記憶體洩漏問題

使用 phpexcel 來生成 excel 文件是比較消耗記憶體的,有時候可能會需要通過乙個迴圈來把大資料切分成若干個小的 excel 文件儲存來避免記憶體耗盡。然而 phpexcel 存在 circular references 的情況 貌似在最新的 1.6.5 版本中仍然沒有去解決這個問題 如果...

PHPExcel記憶體洩漏問題解決方法

使用 phpexcel 來生成 excel 文件是比較消耗記憶體的,有時候可能會需要通過乙個迴圈來把大資料切分成若干個小的 excel 文件儲存來避免記憶體耗盡。然而 phpexcel 存在 circular references 的情況 貌似在最新的 1.6.5 版本中仍然沒有去解決這個問題 如果...