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

2018 年 4 月 23 日
 turan12

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

5105 次点击
所在节点    PHP
30 条回复
swat199538
2018 年 4 月 24 日
这个是干嘛的做系统维护工作的?维护工作写定时脚本在 CLI 里面执行呀。
vincenttone
2018 年 4 月 24 日
八成是个统计逻辑,写个定时统计就可以了吧。队列或者 crontab 就可以了。
abccccabc
2018 年 4 月 24 日
4 楼的方案行得通。

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

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

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

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

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

© 2021 V2EX