关于队列的问题

需求:

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

代码:

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

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

问题:

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

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

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

《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 12

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

9年前 评论

而且我并没有启动listen

9年前 评论

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

9年前 评论
Summer

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

9年前 评论
LearnKuJ

目测.env中没配置QUEUE_DRIVER

9年前 评论

@TimJuly
有的, QUEUE_DRIVER=redis

9年前 评论
LearnKuJ

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

9年前 评论

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

9年前 评论

@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的代码

9年前 评论

使用这个库

barryvdh/laravel-async-queue

搞定了

9年前 评论

队列监听器运行了么?

7年前 评论

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