来源:(Reddit)PHP100中文网

原文地址: http://www.php100.com/html/dujia/2014/1226/8195.html

问题(来自lunacyfoundme)

我正在重建我们公司内部网,期间遇到一个与大量数据处理报告有关的前一个版本的问题。此前我曾用同步处理程序代码解决过这个问题,只是运行的很慢很慢,这导致我不得不延长最大脚本运行时间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袋土豆的成本存储在一个数组或其他类似的地方,所以你不必把同样的东西翻来覆去的计算。这个技术叫做记忆术,在像你这样的报告中使用往往会带来奇迹般的效果。
 
原文: http://www.reddit.com/r/PHP/comments/2pyuy0/heavy_data_processing_in_php/
译文: http://www.php100.com/html/dujia/2014/1226/8195.html
(翻译:PHP100_Alex)

在PHP中怎么解决大量数据处理的问题相关推荐

  1. iphone XCode调试技巧之EXC_BAD_ACCESS中BUG解决

    http://mobile.51cto.com/iphone-279455.htm XCode调试技巧之EXC_BAD_ACCESS中BUG解决是本文要介绍的内容,在iphone开发的时候EXC_BA ...

  2. tableView的plain样式的headerView的上拉过程中悬停解决方法

    tableView的plain样式的headerView的上拉过程中悬停解决方法 参考文章: (1)tableView的plain样式的headerView的上拉过程中悬停解决方法 (2)https: ...

  3. CentOS使用sudo提示用户不在sudoers文件中的解决方法

    CentOS使用sudo提示用户不在sudoers文件中的解决方法 参考文章: (1)CentOS使用sudo提示用户不在sudoers文件中的解决方法 (2)https://www.cnblogs. ...

  4. java web 中有效解决中文乱码问题-pageEncoding与charset区别, response和request的setCharacterEncoding 区别

    java web 中有效解决中文乱码问题-pageEncoding与charset区别, response和request的setCharacterEncoding 区别 参考文章: (1)java ...

  5. jsp项目中连接数据库解决java.lang.ClassNotFoundException: com.mysql.jdbc.Driver的问题

    jsp项目中连接数据库解决java.lang.ClassNotFoundException: com.mysql.jdbc.Driver的问题 参考文章: (1)jsp项目中连接数据库解决java.l ...

  6. Layui框架 中table解决日期格式问题

    Layui框架 中table解决日期格式问题 参考文章: (1)Layui框架 中table解决日期格式问题 (2)https://www.cnblogs.com/slacker-z/p/996347 ...

  7. java做直播需要哪些技术_直播APP开发中需要解决哪些技术难点?千联信息

    泛娱乐发展的火热,网红经济不断发酵的今天,不少企业靠着开发直播APP狠狠的赚了一波,导致很多人眼红,也想投入其中. 那么开发一款直播APP开发中需要解决哪些技术难点?小编在这里就来为大家解答: 视频直 ...

  8. 【全栈项目上线(vue+node+mongodb)】06.nodejs服务上线(生产环境前后分离的vue项目中怎么解决跨域问题)...

    以下操作使用下面项目为案例 https://github.com/itguide/vnshop ## 启动node服务 克隆好项目后记得把依赖包安装好 npm i 使用 node 启动node服务 c ...

  9. VM之Linux:Linux的Ubuntu中,解决安装后屏幕太小的问题

    VM之Linux:Linux的Ubuntu中,解决安装后屏幕太小的问题 导读 最讨厌网上回答的啰嗦和不清晰!本人最讨厌啰嗦,直接上来,图文表达,简单明了,快速解决问题!最讨厌网上答案一大片的废话和没有 ...

最新文章

  1. 计算机组成原理:储存系统和结构
  2. 【Python基础】Python中的高效迭代库itertools,排列组合随便求
  3. 软件整合--硬件整合--平台整合
  4. mongodb的条件查询笔记
  5. 20145227《Java程序设计》第10周学习总结
  6. PCL中分割方法的介绍(2)
  7. 序列标注模型结果评估模块seqeval学习使用
  8. java 微信 百度地图,android 百度地图gps转百度地图坐标java.lang.UnsatisfiedLinkError: CoordinateEncryptEx...
  9. hadoop面试题汇总
  10. ql的python学习之路-day5
  11. 排列组合思维导图_Xmind 进阶教程|高级感满满的思维导图都在使用的6个技巧。...
  12. Axmath:一款Word公式编辑神器
  13. PPT自动翻页的实现和取消
  14. iOS开发 设置状态栏字体颜色
  15. PyQt5 自定义颜色、形状粗细、虚线等组合下拉框
  16. 复旦大学计算机科学与技术,复旦大学计算机科学技术学院
  17. ReferenceQueue、Reference详解
  18. 【金融风险管理】python进行股票标准差、方差、均值、离散系数、标准化、对数收益率
  19. 机器学习——VC维问题
  20. maya RedShift 渲染报警告:细分问题

热门文章

  1. error: failed to push some refs to ‘https://gitee.com/wangdxstudy/mygirl.git‘解决办法
  2. 图片滑块验证码的解决
  3. Redis-SETNX命令简介
  4. useReducer
  5. 关于wangEditor 5的使用以及使用的一些错误
  6. 根据一年的周数得到日期
  7. 数据增强,扩充了数据集,增加了模型的泛化能力
  8. 熵、图像熵的意义及计算方法
  9. 一路两输入正与门SN74AHC1G08学习
  10. 宝塔面板+NextCloud文档云 搭建流程