本篇文章给大家带来了关于php的相关知识,其中主要跟大家介绍怎么做到一分钟多进程百万数据导出到csv并上传到oss,感兴趣的朋友下面一起来看一下吧,希望对大家有帮助。
需求
- 产品要导出某个团队某些用户的步行日志到csv文件里,并且要在一个文件内,而且速度要快不能太耗时间。
问题
- 日志往往意味着数据量大。
- 要导在一个文件内,数据量虽然大也能解决,无非就是分页查询并写入csv。
- 速度快时间短,也能解决无非就是多进程导出多个文件,没有什么难的,但是需求是一个文件!
解决思路
- 先查询出要导出的数据总量
- 投入到批次队列里面启动多个消费者查询并写入到多个csv里面。
- 投递队列时记录每个队列写入的csv具体路径和文件名称。
- 利用批次队列的特性在执行完毕时,把上一步记录的多个csv按照顺序合并到一个csv里面
- 合并完成之后,删除合并前的多个csv,保留合并的csv并上传到oss
结果
经过测试50多万数据,批次队列里面每个队列分配5万条数据去处理,走完一个流程耗时不到一分钟,这种方式有多快取决于服务器能启动多少个消费者多少个进程,我测试时用的是自动策略,最高是同时8个消费者在执行。
推荐学习:《laravel视频教程》
以上是一分钟多进程百万数据导出到csv并上传到oss的详细内容。更多信息请关注PHP中文网其他相关文章!