PHPExcel - 以块的形式写入/追加

时间:2012-03-15 23:44:50

标签: php phpexcel

我正在使用PHPExcel框架尝试从mysql查询中写出一个非常大的ex​​cel文档。

一切正常,直到我点击5000行标记(或那里有大约),页面被标记错误:

Fatal error: Allowed memory size of xxx bytes exhausted (tried to allocate yyy bytes) in zzz on line aaa

我知道这是记录在案的,我已经调整了服务器上的内存分配,但即便如此,我仍然达到了上限。我也试图关闭格式化,但实际上我需要它。

那么有没有办法用小块写入,或附加到excel文档,所以我不会耗尽内存分配?我正在思考沿着页面写行说1000行,然后重定向到自己并使用GET处理下一个1000来跟踪。例如:

index.php?p=0

然后重定向到

index.php?p=1000

但是,如果不打开整个文件,我找不到附加到现有文档的方法。

1 个答案:

答案 0 :(得分:3)

没有办法用块编写,虽然常见的错误是人们将mysql数据加载到数组中,然后遍历设置Excel单元格数据的数组。在循环遍历mySQL查询结果集时,设置单元数据的内存效率更高。

如果您需要将内存使用量降至最低,您使用的是哪种单元缓存方法?单元缓存速度较慢,但​​可以节省大量内存。