我有一个脚本,可以读取附有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
答案 0 :(得分:4)
您不能简单地取消或取消设置PHPExcel对象以将其从内存as explained in the documentation中删除,因为它包含循环引用(工作簿包含工作表对象的集合,每个工作表引用工作簿;类似于工作表和单元格对象)不能简单地通过unset解析。相反,您需要先破坏这些引用
WARN