请教一个使用队列导出excel的问题

导出excel是使用php去直接下载的。我在使用队列时,它并没有按照我预期从浏览器下载,而是在我终端运行php artisan queue:work时在终端进行下载,从而导至错误。
请问我想让它下载时加入到队列,并且在浏览器里调用下载

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
最佳答案

搞清楚http是无状态的,请求只是把任务塞进队列之后就返回了,队列会异步运行,如果想在浏览器下载,可以创建队列任务的时候插入一条excel生成历史,记录进度,等进度100就可以创建一个文件下载,用户手动下载了

1年前 评论
浪里小白龙 (楼主) 1年前
讨论数量: 6
陈先生

我想你可能需要清楚以下几个问题点

  1. Queue 能不能直接与你的浏览器通信
  2. 队列的作用是什么

在你使用一个物品之前你需要知道这个物品是为了解决什么而产生。

1年前 评论

前端请求导出之后,队列生成文件,前端轮询请求后端接口(返回下载导出文件下载地址),队列完成之后,接口返回下载地址,前端请求地址下载

1年前 评论
浪里小白龙 (楼主) 1年前

搞清楚http是无状态的,请求只是把任务塞进队列之后就返回了,队列会异步运行,如果想在浏览器下载,可以创建队列任务的时候插入一条excel生成历史,记录进度,等进度100就可以创建一个文件下载,用户手动下载了

1年前 评论
浪里小白龙 (楼主) 1年前
sanders

也可以换个思路,通过广播把数据推给前端,让前端使用 sheetjs 流式写入 xlsx 文件。

1年前 评论

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