来个 PHP shell 自动执行的思路

2017-05-30 22:08:19 +08:00
 colordog

场景是这样的,有一个商城,预估用户数为 10w+,客户要求每月 1 日,计算每个用户上个月的消费总额和消费笔数,然后根据这 2 个数值,自动给用户升降级,同时需要写入升降级记录以便用户查询;

问题,写一个 php 程序,如果一次 foreach 出来 10w 个数据,再循环查询、插入,效率感觉很低,服务器基本要垮掉,而浏览器我记得可以一次处理一部分,然后跳转再执行下一部分,跟分页似的,可是用 shell 行么?不行吧,使用 sleep 让 php 等待不知道是不是可以,希望大家给个思路。

4120 次点击
所在节点    PHP
26 条回复
harborM
2017-05-31 09:42:04 +08:00
想必计算用户的上月总额和笔数不会在每月一日执行,每月一日前的工作是取出已经叠加的聚合数值执行升降级工作,那么可以用一条语句直接 update,担心性能的话可以用 crontab + limit 分段工作;
gouchaoer
2017-05-31 17:01:45 +08:00
php-cli 部署很麻烦的,10w 的数据量就用 php-fpm 就 ok 了,至于怕 cron 超时的话超过一定时间之后可以自己触发新的 php 请求。。。。
mengdodo
2017-05-31 17:37:49 +08:00
phpredis
mingyun
2017-05-31 22:11:13 +08:00
cli 每次取 1000 获取最后一个 id 然后第二次从 这个 id 开始,依次循环
baoguok
2017-06-02 11:55:29 +08:00
php xx.php

用多线程处理,10 万,也就几分钟的事情
zhengwenk
2017-07-06 13:53:23 +08:00
才 10w 用户 你开一个 php 脚本 放后台跑,一伙都跑完了吧

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

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

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

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

© 2021 V2EX