需求是希望大数据量的文件能做到页面筛选条件后以excel形式即时下载。
数据量最大能有1000W,数据从库中查出来后还要经过一系列过滤查询等,所以耗时比较长。
尝试过workman开几个进程,但是每次一个请求过来还是只有一个进程在执行,能否实现数据按量分批,每批跑一个进程,这样总耗时就是执行最慢的那一批,最后结果再汇总。
请实现过的大神赐教,谢谢。
自行分批发送到多个任务进程,自行监听任务执行状况,自行合并数据,但是这个是异步,没法实现即时下载 要即时可考虑使用swoole的协程,依旧要自行分批自行合并.
耗时长只能异步excel生成完成后,websocket通知浏览器自动响应下载
“自行分批发送到多个任务进程” 可以理解为,发起下载请求时就得拆成多个并发请求,一个请求只能对应一个workman任务进程,不能等请求过来了再占用多个进程去处理,否则只能考虑swoole的协程,是否如此?
不是,看你的需求 区别就是点下载后,允许跳转页面去做其他的事,等合并完再通知下载,那workerman就可以, 如果必需要求在当前页面等,那swoole,
以上情况只适用于,仅限http,不借助长连接的情况下
查询条件参数建议丢队列,队列开进程去导出然后写入记录到任务数据表标记完成,使用迅雷下载。 swoole 协程也是单进程的,你这个它完成不了。
自行分批发送到多个任务进程,自行监听任务执行状况,自行合并数据,但是这个是异步,没法实现即时下载
要即时可考虑使用swoole的协程,依旧要自行分批自行合并.
耗时长只能异步excel生成完成后,websocket通知浏览器自动响应下载
“自行分批发送到多个任务进程” 可以理解为,发起下载请求时就得拆成多个并发请求,一个请求只能对应一个workman任务进程,不能等请求过来了再占用多个进程去处理,否则只能考虑swoole的协程,是否如此?
不是,看你的需求
区别就是点下载后,允许跳转页面去做其他的事,等合并完再通知下载,那workerman就可以, 如果必需要求在当前页面等,那swoole,
以上情况只适用于,仅限http,不借助长连接的情况下
查询条件参数建议丢队列,队列开进程去导出然后写入记录到任务数据表标记完成,使用迅雷下载。
swoole 协程也是单进程的,你这个它完成不了。