2011-06-01 88 views
2

我使用PHPExcel创建基于数据库记录的Excel文件,并且在大型数据集上生成它时遇到了一个奇怪的问题。我已经缩小到一个单一的问题导致线:

$objWriter->save('php://output'); 

它只是吐出一个空白文件,而不是预期的工作簿。此外,如果我尝试将结果保存到本地文件而不是重定向到浏览器,则效果类似 - 不会创建任何文件。

该kicker是它适用于较小的数据集(较小=多达200行,较大=多达2000行,在这两种情况下多达20列)。它也可以在另一个(开发)服务器上正常工作,其中完全相同,100%完全相同,大型数据集为

我的save()调用包装在try-catch中,但没有引发异常。在save()之前执行memory_get_peak_usage()告诉我它正在使用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.

+0

您是否在web服务器的error.log中有任何内容? – 2011-06-01 12:34:16

+0

网络服务器没有错误。 – SaltyNuts 2011-06-01 12:40:53

+0

这16386位可能包含所有的头信息等。 Firebug究竟发送了什么。尽管这本身可能无法解决您的问题。 – 2011-06-01 12:45:24

回答

0

根据您在评论中给出的反馈,我认为您不符合所有要求。您可以找到要求列表here on the phpexcel website

+0

如果我没有要求,我怎么能够从其他数据集创建Excel文件,在同一台服务器上使用相同的脚本? – SaltyNuts 2011-06-01 13:18:43

+0

可能是因为PHP脚本的最大运行时间设置得太小。正如您所看到的,生成文件有时需要几分钟时间:http://phpexcel.codeplex.com/discussions/230867 – 2011-06-01 13:27:29

+0

超时时间肯定比运行时间要长。 – SaltyNuts 2011-06-01 13:36:14