国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > PHP > 正文

PHPExcel內存泄漏問題解決方法

2024-05-04 23:30:28
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了PHPExcel內存泄漏問題解決方法,本文先是講解了造成內存泄漏的原因,然后給出了解決方法,需要的朋友可以參考下
 

使用 PHPExcel 來生成 excel 文檔是比較消耗內存的,有時候可能會需要通過一個循環來把大數據切分成若干個小的 excel 文檔保存來避免內存耗盡。
然而 PHPExcel 存在 circular references 的情況(貌似在最新的 1.6.5 版本中仍然沒有去解決這個問題),如果在一次 http 請求過程中反復多次構建 PHPExcel 及 PHPExcel_Writer_Excel5 對象實例來完成多個 excel 文檔生成操作的話,所有被構建的對象實例都無法在 http 請求結束之前及時釋放,從而造成內存泄漏。
解決辦法是在 PHPExcel_Worksheet 類中增加方法:

復制代碼代碼如下:

 public function Destroy() {
     foreach($this->_cellCollection as $index => $dummy) {
         $this->_cellCollection[$index] = null;
     }
 }

并在 PHPExcel 類中增加方法:
復制代碼代碼如下:

 public function Destroy() {
     foreach($this->_workSheetCollection as $index => $dummy) {
         $this->_workSheetCollection[$index]->Destroy();
         $this->_workSheetCollection[$index] = null;
     }
 }

然后在需要資源回收的地方顯式的調用 PHPExcel::Destroy() 來處理循環引用的問題。注意 __destruct() 方法是在對象被認為可以被釋放的時候才會被調用,所以循環引用的處理不能放到 __destruct() 來進行。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 米林县| 建阳市| 丹凤县| 巧家县| 板桥市| 高邑县| 海南省| 隆化县| 鞍山市| 宜君县| 邯郸市| 牡丹江市| 桓台县| 博客| 田林县| 阿拉善右旗| 吴川市| 南开区| 星座| 肃宁县| 南昌县| 泽普县| 舟山市| 招远市| 北碚区| 读书| 丰台区| 兖州市| 吴旗县| 高尔夫| 崇文区| 得荣县| 红河县| 顺昌县| 张掖市| 石城县| 荔浦县| 达州市| 湟中县| 大荔县| 通海县|