2018-10-23 09:54:16 3381次浏览 3条回答 0 悬赏 10 金钱

我用高级版安装了queue队列的扩展已经成功,先用了composer 安装后,
再对配置文件添加了

return [
    'bootstrap' => [
        'queue', // 把这个组件注册到控制台
    ],
    'components' => [
        'redis' => [
            'class' => \yii\redis\Connection::class,
            // ...
        ],
        'queue' => [
            'class' => \yii\queue\redis\Queue::class,
            'redis' => 'redis', // 连接组件或它的配置
            'channel' => 'queue', // Queue channel key
        ],
    ],
];

对queue的支持,最后运行init.bat重置后,在cmd 里面运行yii 就可以查看到queue命令

请问一下我目前项目用的是yii2框架的基础版本,虽然也用composer安装了扩展,但是cmd下运行yii始终没有queue的命令,请问以下我这个在基础版本里面该怎么实现对queue的支持呢?

最佳答案

  • 花椒 发布于 2018-10-23 10:49 举报

    基础版config下的console.php做同样的配置后再试下

    1 条回复
    回复于 2018-10-30 16:10 回复

    谢谢,确实是在console.php里面配置后就生效了。非常感谢!

  • 回答于 2018-10-23 11:09 举报

    在console或者common中config/main.php添加下面配置

    return [
        'vendorPath' => dirname(dirname(__DIR__)) . '/vendor',
        'components' => [
            'redis' => [
                'class' => 'yii\redis\Connection',
                'hostname' => '127.0.0.1',
                'port' => 6379,
                'database' => 0,
            ],
            'queue' => [
                'class' => 'yii\queue\redis\Queue',
                'redis' => 'redis', // Redis connection component or its config
                'channel' => 'queue', // Queue channel key
                'as log' => 'yii\queue\LogBehavior',
                'ttr' => 10 * 60, // Max time for anything job handling
                'attempts' => 3, // Max number of attempts  选项设置了最大的尝试次数
            ],
        ],
    ];
    
    
    1 条回复
    回复于 2018-10-30 16:12 回复

    谢谢,你的思路是对的,基础版要在console.php里面配置后才生效,一直在高级版里面用init来生成导致了误区。不过最佳答案没有给你抱歉,我是按照回答的先后顺序来给的!

  • 回答于 2018-10-24 09:35 举报

    上面几层说的都对哦,我也再重复一下。

    思路就是哪里需要在哪里配置,比如你在web模式下的某些action内要实现将信息写入队列的操作,因此你需要配置config/web.php,就有了如下代码

    // 组件
    'queue' => [
        'class' => \yii\queue\file\Queue::class,
    ],
    

    但是你需要通过yii2的命令行模式去监听或运行队列,让每个worker在流水线上工作,因此需要配置 config/console.php

    'bootstrap' => ['log','queue'],
    // 组件里
    'queue' => [
        'class' => \yii\queue\file\Queue::class,
    ],
    

    阿北哥ya

    1 条回复
    回复于 2018-10-30 16:13 回复

    谢谢,你的答案正确,不过最佳答案没有能给你;抱歉。我是按照回答的先后顺序来给的!

您需要登录后才可以回答。登录 | 立即注册
landong66
见习主管

landong66

注册时间:2015-01-29
最后登录:2020-04-16
在线时长:9小时3分
  • 粉丝2
  • 金钱115
  • 威望0
  • 积分205

热门问题