有一个进行数据运算的 PHP 页面,因为需要多次读取数据库,通常需要 2-3 分钟才能执行完毕,如果长期作为生产用途,会不会有什么隐患?

2018-04-23 14:43:29 +08:00
 turan12

这个程序不会调用的太频繁,但就是需要花费几分钟时间(可能需要进行数千次 MySQL 查询)。而且随着数据量的增加,需要花费的时间可能会更长一些。不知道像这种需要花费一定时间才能执行完毕的 PHP 页面会不会给服务器或程序带来各种问题?如果会的话顺便求个解决方案。

3726 次点击
所在节点    PHP
30 条回复
swat199538
2018-04-24 13:25:14 +08:00
这个是干嘛的做系统维护工作的?维护工作写定时脚本在 CLI 里面执行呀。
vincenttone
2018-04-24 14:09:44 +08:00
八成是个统计逻辑,写个定时统计就可以了吧。队列或者 crontab 就可以了。
abccccabc
2018-04-24 18:14:36 +08:00
4 楼的方案行得通。

我之前的公司就这样做,主要是跑一些东西。
turan12
2018-04-24 22:28:59 +08:00
@swat199538
@vincenttone
确实是个实时统计的功能,而且在统计以后还需要进一步进行其它数据分析。
vincenttone
2018-04-25 10:45:25 +08:00
@turan12 即使是实时统计系统也可以做成异步处理,前提是你的数据变化是否频繁,不频繁可以展示的时候显示计算时间和数据变化时间,或者显示查询中之类,这都是产品问题了。
还有就是你的查询八成是可以做成并行的,第一次或者 n 次的总查询完成后,可以多个线程并行。用的是 php 的话,可以考虑用 ev 扩展或者 swoole 之类的起并行。
turan12
2018-04-25 12:00:03 +08:00
@vincenttone 数据变化的还是很频繁的,基本是秒级。不过并行却是个很好的思路,之前没想到。
vincenttone
2018-04-25 15:21:47 +08:00
@turan12 嗯 并行的时候注意数据库连接的占用,尽量复用应该问题不大
turan12
2018-04-25 16:12:46 +08:00
@vincenttone 嗯,多谢提醒!
han8gui
2018-06-08 13:45:28 +08:00
服用数据库实例的话,就没啥问题。
swat199538
2019-05-17 10:20:15 +08:00
@turan12 我也推荐异步处理方式。前端等待结果就行了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/449130

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX