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

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

《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
最佳答案

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

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

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

3年前 评论
讨论数量: 9

生成一个可下载的链接

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

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

3年前 评论

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

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

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

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

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

3年前 评论

www.jb51.net/article/126481.htm

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

3年前 评论

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

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

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

3年前 评论

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

3年前 评论

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