2023-04-20

一分钟多进程百万数据导出到csv并上传到oss

本篇文章给大家带来了关于php的相关知识,其中主要跟大家介绍怎么做到一分钟多进程百万数据导出到csv并上传到oss,感兴趣的朋友下面一起来看一下吧,希望对大家有帮助。

需求

  1. 产品要导出某个团队某些用户的步行日志到csv文件里,并且要在一个文件内,而且速度要快不能太耗时间。

问题

  1. 日志往往意味着数据量大。
  2. 要导在一个文件内,数据量虽然大也能解决,无非就是分页查询并写入csv。
  3. 速度快时间短,也能解决无非就是多进程导出多个文件,没有什么难的,但是需求是一个文件!

解决思路

  1. 先查询出要导出的数据总量
  2. 投入到批次队列里面启动多个消费者查询并写入到多个csv里面。
  3. 投递队列时记录每个队列写入的csv具体路径和文件名称。
  4. 利用批次队列的特性在执行完毕时,把上一步记录的多个csv按照顺序合并到一个csv里面
  5. 合并完成之后,删除合并前的多个csv,保留合并的csv并上传到oss

结果

经过测试50多万数据,批次队列里面每个队列分配5万条数据去处理,走完一个流程耗时不到一分钟,这种方式有多快取决于服务器能启动多少个消费者多少个进程,我测试时用的是自动策略,最高是同时8个消费者在执行。

4d1faaacf31f732ea38b25fedd0feb3.png

推荐学习:《laravel视频教程

以上就是一分钟多进程百万数据导出到csv并上传到oss的详细内容,更多请关注php中文网其它相关文章!

声明:本文转载于:learnku,如有侵犯,请联系admin@php.cn删除

  • 相关标签:php
  • https://www.php.cn/php-weizijiaocheng-522850.html

    发表回复

    Your email address will not be published. Required fields are marked *