2017-11-30 18:37:44 2714次浏览 6条回答 0 悬赏 100 金钱

项目有需求,需要点击下载文件、或者导出、导入文件的时候,即加入后台任务,在后台那里添加任务运行查询,等查询完数据再提示可以下载,请问应该怎么实现呢,各位大牛

最佳答案

  • dingjj2010 发布于 2017-12-04 13:43 举报

    1任务加到数据库,用一个定时脚本去跑,跑完更新状态
    2用消息队列去处理

  • 回答于 2017-12-01 10:40 举报

    个人想法:
    查出数据后,渲染成对应类型的文件,将文件存放的url入表中,可以使用长连接,查看表中是否有它想要数据的url,如果有就提示下载。后台使用rabitMq(消息队列就可以实现异步渲染文件吧)。。。。,前端也可以通过JS点击下载后,隔几秒钟掉一下接口看看需要下载的数据在不在。

    1 条回复
    回复于 2017-12-01 11:14 回复

    没做过这块就别说了 还什么JS点击下载后,隔几秒钟掉一下接口看看需要下载的数据在不在。。。js socket通信会吗

  • 回答于 2017-12-01 11:30 举报

    建议项目集成workerman或swoole,使用参考文档
    我现在有些需求和你差不多,短信,环信,友盟这些都是写入到任务中,发送成功后,同步任务
    下载原理也差不多,队列执行下载完后同步下载地址和状态
    项目下集成了workerman创建一个守护进程,多个子进程,去执行任务
    PC端的socket通信推送消息也支持,

    3 条回复
    回复于 2017-12-04 11:19 回复

    workman好像windows和linux不共用的,单纯用YII框架不可以实现的吗

    回复于 2017-12-05 09:16 回复

    composer安装workerman也可以啊,依赖包使用很方便,或者在yii2项目下 ,自己建个第三方扩展目录,像什么阿里大鱼,微信,支付宝,ueditor,workerman都可以放那下面(我是有时要改vendor下的东西,所有某些扩展会单独拿出来改和使用),我是安装的虚拟机linux下运行的yii2和workerman,部署到线上时也不会有什么改动,运行环境不建议使用window

    回复于 2017-12-05 16:02 回复

    谢谢大佬的帮助,最后通过yii2的console模块和服务器的定时任务实现了

    觉得很赞
  • 回答于 2017-12-01 11:32 举报

    最近也是在做后台管理的时候有个导出 execl 文件,在查看列表页的时候就把当前查看列表的SQL加密作为参数,点击导出就是SQL执行直接导出了。没有什么后台任务进行。如果你的比较繁琐的话,个人建议就是丢到任务中,处理完毕通知用户,至于通知方式可以是 长连接,邮箱,再就是用户刷新或者访问其他站内地址以站内信的方式告知。

    2 条回复
    回复于 2017-12-04 11:17 回复

    就是想要有个后台任务,但是不知道如何实现

    回复于 2017-12-04 13:37 回复

    什么操作,那么费时。

  • 回答于 2017-12-04 17:46 举报

    我想,在后台队列中生成一个任务,同时生成数据库下载文件,状态为输出处理中,后台队列完毕后,更改状态为可下载

  • 回答于 2018-01-31 11:34 举报

    按照你说的需求只能用队列+cron

您需要登录后才可以回答。登录 | 立即注册
zcx147716565
CEO

zcx147716565 广州

注册时间:2017-03-10
最后登录:2021-01-12
在线时长:69小时38分
  • 粉丝9
  • 金钱12500
  • 威望20
  • 积分13390

热门问题