上传excel,然后把数据插入到数据库中,需要实时返回处理数据的进度

上传excel,然后把数据插入到数据库中,需要实时返回处理数据的进度,文件不是很大,但是数据比较多,求思路。

阅读 6.1k
5 个回答

先上传excel表格文件,记录文件存放路径存入队列list1;
服务器建立定时器,用队列(redis)处理表格数据(入库);
进度的话我只试过把不合规的数据再次出列记录下来,其它的都“成功”;

Tips:phpExcel可以处理excel表/用队列去处理主要是不要让用户等太久,毕竟插入数据库的数据很多

我们还是采取了websocket的方式,在文件上传完毕之后会开启websocket监听,每一秒钟发一次请求返回百分比

excel处理是比较麻烦,主要是两部分比较耗时,解析excel,还有就是存储,存储这块不比较还好,如果需要和库里对比就太慢了。
第一部分可以采用https://git.oschina.net/xavie... 目前只支持XLS,速度快,占用内存小,几M的小文件毫无压力,处理十几兆都很快。

第二个部分这个么办法。

然后回答题主,执行之前可以在redis或者其他缓存中写入状态,表示正在执行。然后由于知道excel总行数,可以每插入一行,修改一下缓存中插入数据的数量。
另外一个页面做查询状态接口,根据当前执行了多少行就知道百分比了
前台做轮询或者websocket查询这个页面获取数据

最简单的方式,接收到文件,新开线程去处理,然后返回一个唯一键,可以是生成的临时文件名,把进度信息放在缓存里,用唯一键作为key,前端上传成功得到唯一键,然后定时想后端请求,带上这个key查询进度信息就好了

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题