使用 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() 来进行。
分享到:
相关推荐
主要介绍了PHPExcel内存泄漏问题解决方法,本文先是讲解了造成内存泄漏的原因,然后给出了解决方法,需要的朋友可以参考下
我们经常会使用phpExcel导入或导入xls文件,但是如果一次导出数据比较大就会出现内存溢出错误,下面我来总结解决办法
PHPExcel 代码
PhpExcel中文帮助手册|PhpExcel使用方法
PHPExcel-1.8下载
PHPExcel.zip
PHPExcel包,PHPExcel包,PHPExcel包,PHPExcel包,PHPExcel包,
Ecshop 商品批量上传,下载批量xls文件(美国英语)程序的更改,直接excel 2007版,在网上搜索了很多,都很少提到如何应用phpexcel类,打印出第一行的数据,重新整合,可进行第一行的打印: Phpexcel类的应用 官方...
目前测试xlsx格式;导出时没问题; $Writer = PHPExcel_IOFactory::createWriter($PHPExcel, 'Excel2007'); $Writer->save('php://output'); 主要时 php7.4不支持某些旧的特性。
phpexcel实例 phpexcel实例
PHPExcel支持php7.4
PHPExcel类
PhpExcel中文帮助手册
1.将 phpexcel 导出excel报错 处理后的文件 2,下载部署直接访问 :域名+/Examples/01simple.php即可看见效果
PHPExcel1.7.9 php使用phpexcel导出office等文件
PHPExcel开发手册 PHPExcel中文开发手册 PHPExcel从官网直译过来的开发手册
PHPEXCEL使用小结,告诉你PHPEXCEL使用
phpexcel最新版本1.8.2
PHPExcel 基本用法详解 复制代码 1.header header("Content-Type:application/vnd.ms-excel"); header("Content-Disposition:attachment;filename=sample.xls"); header("Pragma:no-cache"); ...