我在允许用户从数据库下载大型报告时遇到了问题。
用户可以在网站上浏览报告,我已经为页面设置了限制和分页,所以没有问题。
但是现在我在csv文件中添加了一次下载整个报告的功能。我收到内存错误,说我已达到允许的最大内存,并且我没有权限在服务器上增加它。有谁知道如何才能做到这一点?到目前为止只是得到700k结果的查询停止了我的脚本。
ps我有搜索stackoverflow,到目前为止找不到它的答案。我正在使用php和mysql来获取数据。
提前致谢
答案 0 :(得分:3)
不要在单个请求中导出整个数据。
在从数据库导出数据时应用一些限制和偏移量。
喜欢:
答案 1 :(得分:1)
根据我对Guarav答案的评论,你无法一次性从数据库中获取那么多数据 - 你以后如何操纵它并不重要。
你必须
我该如何重定向?如果我已经发送
这是微不足道的 - 如果你在理解如何做到这一点时遇到问题,那么你已经大大超出了你的深度。
答案 2 :(得分:0)
就像@symbcbean所说的那样,创建文件并使用每个查询偏移附加数据的过程非常缓慢。所以我提出了一个替代方案,我认为我应该分享,以防其他人面临同样的问题。
我已经设置了一个cronjob,它会在晚上创建包含所有必要数据的文件,因为数据每周只会更改几次。所以现在我已经清除了每次有人需要访问它时生成新csv的开销,而只需重定向到预制文件并完成工作!
谢谢@Gaurav& @symbcbean!
答案 3 :(得分:0)
您可以将数据附加到一堆记录中的文件中 就像是 : 从mysql获取第一条10000条记录 首先将10000条记录写入文件 获得第二个10000记录 将第二个10000记录写入文件 然后打开链接并将其发送给用户。