我正在使用 PHPExcel 根据数据库中的记录创建一个 Excel 文件,并且在大型数据集上生成它时遇到了一个奇怪的问题。我已将其缩小到一个导致问题的行:
$objWriter->save('php://output');
它只是吐出一个空白文件而不是预期的工作簿。此外,如果我尝试将结果保存到本地文件而不是重定向到浏览器,效果也是类似的 - 不会创建任何文件。
更重要的是它适用于较小的数据集(较小 = 最多 200 行,较大 = 最多 2000 行,两种情况下最多 20 列)。它也可以在另一个(开发)服务器上正常工作,该服务器具有完全相同的、100% 相同的大型数据集。
我确实将save()
调用包装在 try-catch 中,但没有引发异常。memory_get_peak_usage()
在 for 之前执行save()
告诉我它正在使用 24MB,而我ini_set('memory_limit', '-1')
在脚本的前面有。此外,在运行脚本时监视服务器上的内存使用情况也不会显示任何显着增加。
有什么调试技巧吗?
编辑:apache日志中没有错误,但是我确实注意到访问日志中的相关行说:
10.1.1.1 - - [01/Jun/2011:08:35:03 -0400] "GET /get_excel.php HTTP/1.1" 200 16386
奇怪的部分是最后一列 - 大小。我实际下载的文件总是空的——正好是 0 位,而不是 16386。