遇到一个与大量数据处理报告有关的前一个版本的问题。此前我曾用同步处理程序代码解决过这个问题,只是运行的很慢很慢,这导致我不得不延长最大脚本运行时间10到15分钟。有没有更好的方式来处理php站点里的大量数据呢?理想情况下我想在后台运行它,并且跑的越快越好。这个过程包括处理成千上万条的财务数据,我是使用laravel来重建这个站点的。
最好受欢迎的回答(来自spin81): 人们都告诉你要使用队列和诸如此类的东西,这是一个好主意,但问题好像并没有出在php上面。laravel/oop是很厉害的,但生成你所说的报告的程序似乎不应你该有问题。对于不同的看法,我想看看你得到这些数据时使用的sql查询。正如其他人所说,如果你的表单有成千上万行那你的报告应该不会耗费10到15分钟才完成。实际上,如果你没做错事的话可能会在一分钟内就能处理成千上万条记录,完成同样的一篇报告。
1.如果你正在做成千上万条查询,看看你能不能先只做几条查询。我之前曾使用一个php函数把70000条查询降为十几条查询,这样它的运行时间就从几分钟降到了几分之一秒。
2.在你的查询上运行explain,看看你是不是缺少什么索引。我曾经做过一个查询,通过增加了一个索引后效率提高了4个数量级,这没有任何夸张的成分。如果你正在使用mysql,你可以学学这个,这种“黑魔法”技能会让你和你的小伙伴惊呆的。
3.如果你正在做sql查询,然后获得结果,并把很多数字弄到一起,看看你能不能使用像sum()和avg()之类的函数调用group by语句。跟普遍的情况下,让数据库处理尽量多的计算。我能给你的一点很重要的提示是:(至少在mysql里是这样)布尔表达式的值为0或1,如果你很有创意的话,你可以使用sum()和它的小伙伴们做些很让人惊讶的事情。
4.好了,最后来一个php端的提示:看看你是不是把这些同样很耗费时间的数字计算了很多遍。例如,假设1000袋土豆的成本是昂贵的计算,但你并不需要把这个成本计算500次,然后才把1000袋土豆的成本存储在一个数组或其他类似的地方,所以你不必把同样的东西翻来覆去的计算。这个技术叫做记忆术,在像你这样的报告中使用往往会带来奇迹般的效果。
相关推荐:
php网站大数据大流量与高并发解决办法
javascript基础教程之六大数据类型用法详解
有关大数据量测试的文章推荐
以上就是php中大数据处理思路实例分析的详细内容。