Laravel 利用 maatwebsite/Excel 如何实现超大量数据导出?

项目需求:将用户产生的数据以Excel的形式导出,本来是没什么问题的,但是时间一长数据大量增加,系统就会报超时,超可导出文件大小,不想通过设置php.ini 以及nginx配置来解决,因为这只是治标不治本;目前我的解决方案是分页导出(每页5000条数据)虽然解决了文件大小的限制,可是超时报错并没有解决;
这问题耽误我都三天了。。。真是醉了,求各位大哥有什么好的解决方案啊

《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 10
leo

用队列来导出,导出完成之后发邮件或者其他手段通知你来下载

5年前 评论

可以通过循环处理。

比如循环50000条数据,每次循环从数据库取1000条数据,处理完后输出到清空本地变量,然后进入下一轮循环,直到结束为止。

需要注意的是:

  • 设置超时处理
  • 不要一次性取出所有数据,分批处理
  • 处理完后初始化变量
  • 一定不要在浏览器执行(前提是不是用户导出数据行为),会受限与php配置和web服务器配置
5年前 评论

@qloog “一定不要在浏览器执行”? 什么意思? 在服务器上运行吗?

5年前 评论

@leo 队列也想过,可能我没说明白 ,我想问的是可不可以秒导10w内的数据

5年前 评论

@我真叫阳阳 看数据是怎么导出个方式,可以浏览器导出,也可以命令行导出,如果是给自己公司导数据那就命令行下就可以了。

5年前 评论
leo

@我真叫阳阳 可以,只要服务器够性能好就行

5年前 评论

我们大数据导出都是在后台队列分批导出,导出完成后就通知用户下载。

5年前 评论

请问一下,老哥你用队列导出了吗?

2年前 评论

导出大量数据的问题怎么解决的 :joy:,我也遇到了同样的问题,导出的数据需要经过大量的查询遍历筛选,导致了N+1的问题,请求超时,使用插件队列没走通

2年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!