【发布时间】:2015-01-04 13:49:11
【问题描述】:
我正在尝试清除 phpexcel 中的对象。多次迭代对象会导致内存不足错误。
文档建议使用 disconnectWorksheets,但它不起作用。
代码如下:
...
$sheet = $instReader->getSheet($sheetOpts['sheet']);
...
echo "memo1:".ys_getmemusage()."\n";
echo "size=". strlen(serialize($instReader))."\n";
$instReader->disconnectWorksheets();
unset($instReader);
unset($sheet);
gc_enable();
gc_collect_cycles();
echo "memo2:".ys_getmemusage()."\n";
exit;
该文件是一个被PHPExcel_IOFactory::identify as Excel2007识别的excel文件
输出是:
memo1:memoryused=45.34888458251953 (45meg)
size=5962925
memo2:memoryused=45.34407043457031 (45meg)
有人知道如何解决这个问题吗?
ys_getmemusage 函数只是获取如下使用的内存。
$GLOBALS['raymemory_usage'] = memory_get_usage();
function ys_getmemusage() {
$end_memory = memory_get_usage() - $GLOBALS['raymemory_usage'];
$end_memory = $end_memory/(1024*1024);
return "memoryused=$end_memory\n";
}
【问题讨论】:
标签: memory-leaks phpexcel