怎么实现大数据量文件的异步导出

一个用户列表大概有好几百万条数据,点击页面上的导出按钮后要一直等着下载完成才能操作其他功能,有没有什么方法可以实现异步下载,点击导出按钮后后台去导出,不影响用户操作其他功能

《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
最佳答案

1、点击导出后,将筛选条件推进队列。(包括总条数)(提示正在处理)

2、消费队列任务,并分页获取列表数据。生成文件。(提示正在处理)

3、将生成的文件,上传某地,并提供下载链接(提示处理完成,超链接下载)

2年前 评论
讨论数量: 9

生成一个可下载的链接

2年前 评论
huchao399 (楼主) 2年前
chowjiawei

楼上正解,给他链接就行了

2年前 评论

生成导出计划,保存用户的查询条件啥的 然后发送消息到队列或者定时任务执行计划生成文档和下载链接通知用户

2年前 评论
huchao399 (楼主) 2年前

可以尝试这个扩展,两种模式 : xlswriter-docs.viest.me/

2年前 评论
huchao399 (楼主) 2年前
Imuyu (作者) 2年前
huchao399 (楼主) 2年前

是否可以通过队列或者定时任务: 通过队列的话使用循环队列,大量数据拆成多个一小部分,然后每个队列处理一部分,队列处理完成自动触发下一部分数据的处理,直至处理完成。 通过定时任务的话,就没有时间长短的限制了,需要注意不要一次性读取数据,数据使用完成后要销毁;另外需要注意一个定时任务处理时间太长的话,可能会启动多个,如每分钟定时任务,1分钟过后上一个定时任务还没有处理完成,会再启动1个定时任务,如果需要单进程处理需要加锁来避免此类问题

2年前 评论

www.jb51.net/article/126481.htm

点击按钮先弹出下载excel,然后再进行查询导出就可以了,分片导出

2年前 评论

1、点击导出后,将筛选条件推进队列。(包括总条数)(提示正在处理)

2、消费队列任务,并分页获取列表数据。生成文件。(提示正在处理)

3、将生成的文件,上传某地,并提供下载链接(提示处理完成,超链接下载)

2年前 评论

header + ob_flush 可以边写边下载,印象中不会阻塞当前页面

2年前 评论

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