PHPExcel不释放内存

时间:2017-08-17 21:16:17

标签: php memory phpexcel

我有一个脚本,可以读取附有Excel文件的电子邮件 我正在使用PHPExcel来解析这些文件。

我目前遇到的问题是电子邮件附有五个电子表格 每次加载第五个文件时,PHP都会耗尽内存。

最初我尝试取消($objPHPExcel = NULL;)并在每次完成后取消设置(unset($objPHPExcel);)PHPExcel对象  它。这没有任何帮助。

然后我尝试将垃圾收集添加到流程(gc_enable(); $cycles_collected = gc_collect_cycles();)。这没有任何帮助。

我将当前的php内存使用情况打印到我的错误日志中,我可以看到它随着每个Excel文件加载到PHPExcel而增长,我也可以看到每个NULL,{内存使用量不会减少{1}}或unset

以下是PHP内存不足之前和之后的一些示例输出到我的error_log:

gc_collect

1 个答案:

答案 0 :(得分:4)

您不能简单地取消或取消设置PHPExcel对象以将其从内存as explained in the documentation中删除,因为它包含循环引用(工作簿包含工作表对象的集合,每个工作表引用工作簿;类似于工作表和单元格对象)不能简单地通过unset解析。相反,您需要先破坏这些引用

WARN