关于队列的问题

需求:

我有一个图片上传的表单, 前端使用uploadify。
图片传到后端之后会先做一些处理, 完成之后放入队列, 队列中会将图片传到七牛。

代码:

            // 放入队列
            dispatch(new UploadImage($result));

            //返回数据
            $result['value'] = base64_encode(json_encode($result));

问题:

现在的问题是, 会在dispatch() 这儿阻塞很久(和同步的执行上传一样)..去掉后就正常。

而且, 我配置的队列驱动是redis, 但是 redis中并没有相关的数据。

请问各位大神问题是出在哪儿了。

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

莫非是同步执行的, 我看图片确实传到七牛去了

8年前 评论

而且我并没有启动listen

8年前 评论

确定是同步的, 怎么使用异步的方式

8年前 评论
Summer

照着文档好好对一遍 http://learnku.com/docs/laravel/5.1/queues

8年前 评论
LearnKuJ

目测.env中没配置QUEUE_DRIVER

8年前 评论

@TimJuly
有的, QUEUE_DRIVER=redis

8年前 评论
LearnKuJ

@cmzz 生效了么,缓存清了么

8年前 评论

@TimJuly 没有.. 发现并没有往redis中写入任何对东, 而是同步的执行了

8年前 评论

@TimJuly

class UploadImage extends Job implements ShouldQueue
{
    use InteractsWithQueue, SerializesModels;

    protected $data;

    /**
     * Create a new job instance.
     *
     * @return void
     */
    public function __construct($data = [])
    {
        $this->data = $data;
    }

    /**
     * Execute the job.
     *
     * @return void
     */
    public function handle()
    {
        QiniuUploadsManager::put($this->data['name'], public_path().'/uploads/'.$this->data['name']);
    }
}

这是job的代码

8年前 评论

使用这个库

barryvdh/laravel-async-queue

搞定了

8年前 评论

队列监听器运行了么?

6年前 评论

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