帮助决定大量报告

时间:2009-06-03 05:37:04

标签: php reporting

我想问一下你的意见。我们有大桌子。每月我们会对该表进行报告。那就是我们需要下载最多20000条记录作为PDF或Excel文件并打印出来。我打算实时生成报告。没有提前一代。这是解决问题的好方法吗?或者如果你有更好的想法,我想听听它。

由于

4 个答案:

答案 0 :(得分:2)

我不是完全得到你的问题;但是当我需要对真正的大桌子或多个真正的大桌子进行实时报道时,我所做的就是预先计算我想要的任何总数。

所以不是像以下那样的查询:

选择计数(*),总和(项目)*价格,日期字段,类型 来自bigtable bt 在bt.id = rbt.rbtid上加入reallybigtable rbt “2009年1月1日”和“2009年1月31日”之间的日期字段 按类型分组,日期字段

我们将有一个存储过程每晚计算每日总数到第二个表 - 然后它只是一个简单的事情,加上30天的预计算总数,而不是计算加入和总结一个数字的问题记录。

答案 1 :(得分:1)

这取决于你是否要生成这个PDF很多。如果你经常生成这个,最好将最后生成的PDF缓存15到30分钟,以避免不断处理这个“大表”。

获取所有数据需要一段时间,但如果您不介意延迟,那么提前生成它可能是一个很好的解决方案。

如果您有很多人访问PDF,并且不想延迟,并且数据变化不是很快,您应该提前生成它。您的生成间隔应与数据过时的速度一致。如果数据每天更改一次,则每日更新通常就足够了。如果数据变化很大,则可能每30分钟左右产生一次。

所以这取决于谁将访问PDF以及频率。

答案 2 :(得分:1)

如果您正在生成那么大的报告,很难想象用户会期望经常更新。总的来说,我认为人们非常重视能够每天最好地下载一致的可重复视图。实际上,这种一致性/可重复性通常是不仅仅是每天刷新报告的好理由,然后存储结果。

如果不太可能每天或更频繁地需要给定的报告,则可以生成延迟报告,从第一次创建给定日期开始存储副本,并且可以使用类似“RepABC_05032009”的文件命名方案.xls“作为给定日期报告的标记。

答案 3 :(得分:0)

20000条记录确实不是那么大,因此“动态”生成肯定会正常工作(除非检索这些记录的查询复杂/慢)。

我建议使用Excel,因为它更容易实现。只输出csv数据(PHP为此准备了现成的函数),并发送适当的内容标题作为响应。

Excel而不是PDF的另一个原因是用户可以在打印之前进行一些小的调整和修改(更改横向/纵向布局,行号,添加自定义备忘录等)。