php多进程编程

最近要做一个统计,50个账号,每个账号每天几千条数据,

用php单进程 串行来跑数据 要好几个小时,这个时间有点难以接受,万一出点问题,更加麻烦。

所以 决定用php多进程来做,开了50个进程,每个进程跑一个账号的数据,中间遇到好几个问题。现在记录下来。

父进程里面用到redis 和db,在子进程里面用父进程的redis实例和db实例,

结果会得到read error on connection  和db mysql has gone away 

应该是复用链接产生的问题,

于是开始在子进程处理的代码里面重新获取redis 和db连接,

最后发现是一个比较难修复的bug, redis 还是偶尔报错,在父进程里面关掉redis链接,子进程重新获取redis链接 问题得到解决。

这样处理后 脚本时间 降低到了40分钟,还是觉得也长,因为有的账号记录数多,有的账号记录数少,所以再次构建成任务队列来处理分析数据,8万条数据,10分钟处理完成入库。

达到满意的效果了。

打赏请扫码~