Configuration 我们在项目中的何处配置Yii2队列扩展?

Configuration 我们在项目中的何处配置Yii2队列扩展?,configuration,yii2,Configuration,Yii2,我正在尝试使用yii2队列 它说: 为了使用扩展,您必须像 以下: return [ 'bootstrap' => [ 'queue', // The component registers its own console commands ], 'components' => [ 'queue' => [ 'class' => \yii\queue\<driv

我正在尝试使用yii2队列

它说:

为了使用扩展,您必须像 以下:

return [
      'bootstrap' => [
          'queue', // The component registers its own console commands
      ],
      'components' => [
          'queue' => [
              'class' => \yii\queue\<driver>\Queue::class,
              'as log' => \yii\queue\LogBehavior::class,
                          // Other driver options
          ],
       ],         
];
返回[
'引导'=>[
'queue',//组件注册自己的控制台命令
],
“组件”=>[
“队列”=>[
'class'=>\yii\queue\\queue::class,
“作为日志”=>\yii\queue\LogBehavior::class,
//其他驱动程序选项
],
],         
];
我的问题很简单:我应该把代码放在哪个PHP文件、哪个目录中


注意:我正在使用基本模板。

对于Yii2 Basic模板
config/console.php

return [
   'bootstrap' => [
      'log',
      'queue',
    ],
    'components' => [
       'queue' => [
          'class' => \yii\queue\db\Queue::class,
          'db' => 'db', // DB connection component or its config
          'tableName' => '{{%queue}}', // Table name
          'channel' => 'default', // Queue channel key
          'mutex' => \yii\mutex\MysqlMutex::class, // Mutex that used to sync queries
          'as log' => \yii\queue\LogBehavior::class,
          // 'deleteReleased' => YII_ENV_PROD,
       ],
    ]
];
对于Yii2 AdvancedTemplate
console/config/main.php

return [
   'bootstrap' => [
      'log',
      'queue',
    ],
    'components' => [
       'queue' => [
          'class' => \yii\queue\db\Queue::class,
          'db' => 'db', // DB connection component or its config
          'tableName' => '{{%queue}}', // Table name
          'channel' => 'default', // Queue channel key
          'mutex' => \yii\mutex\MysqlMutex::class, // Mutex that used to sync queries
          'as log' => \yii\queue\LogBehavior::class,
          // 'deleteReleased' => YII_ENV_PROD,
       ],
    ]
];

参见了解Yii2 Basic模板
config/console.php

return [
   'bootstrap' => [
      'log',
      'queue',
    ],
    'components' => [
       'queue' => [
          'class' => \yii\queue\db\Queue::class,
          'db' => 'db', // DB connection component or its config
          'tableName' => '{{%queue}}', // Table name
          'channel' => 'default', // Queue channel key
          'mutex' => \yii\mutex\MysqlMutex::class, // Mutex that used to sync queries
          'as log' => \yii\queue\LogBehavior::class,
          // 'deleteReleased' => YII_ENV_PROD,
       ],
    ]
];
对于Yii2 AdvancedTemplate
console/config/main.php

return [
   'bootstrap' => [
      'log',
      'queue',
    ],
    'components' => [
       'queue' => [
          'class' => \yii\queue\db\Queue::class,
          'db' => 'db', // DB connection component or its config
          'tableName' => '{{%queue}}', // Table name
          'channel' => 'default', // Queue channel key
          'mutex' => \yii\mutex\MysqlMutex::class, // Mutex that used to sync queries
          'as log' => \yii\queue\LogBehavior::class,
          // 'deleteReleased' => YII_ENV_PROD,
       ],
    ]
];

请参阅

在Yi2 basic上配置它非常简单,在config/web.php文件中添加以下配置,对于Yi2 advanced,如果使用前端,则添加到前端/config/main.php,如果使用后端,则添加到后端/config.main.php

就这样

'components' => [
        'request' => [
            'cookieValidationKey' => 'htXdOInCiP6ut4gNbDO2',
            'csrfParam' => '_frontendCSRF',
        ],
        'queue' => [
            'class' => \yii\queue\<driver>\Queue::class,
            'as log' => \yii\queue\LogBehavior::class,
            // Other driver options
        ],
]
“组件”=>[
“请求”=>[
'cookieValidationKey'=>'htXdOInCiP6ut4gNbDO2',
'csrfParam'=>'u frontendCSRF',
],
“队列”=>[
'class'=>\yii\queue\\queue::class,
“作为日志”=>\yii\queue\LogBehavior::class,
//其他驱动程序选项
],
]

在Yi2 basic上配置它非常简单,在config/web.php文件上添加以下配置,对于Yi2 advanced,如果使用前端,则添加到前端/config/main.php,如果使用后端,则添加到后端/config.main.php

就这样

'components' => [
        'request' => [
            'cookieValidationKey' => 'htXdOInCiP6ut4gNbDO2',
            'csrfParam' => '_frontendCSRF',
        ],
        'queue' => [
            'class' => \yii\queue\<driver>\Queue::class,
            'as log' => \yii\queue\LogBehavior::class,
            // Other driver options
        ],
]
“组件”=>[
“请求”=>[
'cookieValidationKey'=>'htXdOInCiP6ut4gNbDO2',
'csrfParam'=>'u frontendCSRF',
],
“队列”=>[
'class'=>\yii\queue\\queue::class,
“作为日志”=>\yii\queue\LogBehavior::class,
//其他驱动程序选项
],
]

像这样添加到后端或前端的main.php文件中

“引导程序”=>[“日志”,“队列”],

Add this to under component array

            'queue'        => [
                'class'     => Queue::class,
                'db'        => 'db', // DB connection component or its config
                'tableName' => '{{%db_queue}}', // Table name
                'channel'   => 'default', // Queue channel key
  'mutex'     => MysqlMutex::class, // Mutex used to sync queries
        ]
要使其正常工作,您需要在console/config/main.php中执行相同的操作 归档并运行命令listen form documentation on


添加到后端或前端的main.php文件,如下所示

“引导程序”=>[“日志”,“队列”],

Add this to under component array

            'queue'        => [
                'class'     => Queue::class,
                'db'        => 'db', // DB connection component or its config
                'tableName' => '{{%db_queue}}', // Table name
                'channel'   => 'default', // Queue channel key
  'mutex'     => MysqlMutex::class, // Mutex used to sync queries
        ]
要使其正常工作,您需要在console/config/main.php中执行相同的操作 归档并运行命令listen form documentation on



请注意,这可能是一个相关的问题,不确定:它取决于初级
config\console.php
的Yii2模板,高级可以是
console\config\main.php
中的一个,我使用的是初级模板。感谢您的回答,但是“web”文件夹不包含config.php或console.php.Yii2基本模板
config\console.php
请注意,这可能是一个相关问题,不确定:基本
config\console.php
取决于Yii2模板,高级
console\config\main.php
可以是我使用的基本模板之一。感谢您的回答,但是“web”文件夹不包含config.php或console.php.Yii2基本模板
config\console.php
@anroy如果此答案有用,则将其标记为tick and upvote,因为它对另一个答案有用。请注意,基本模板没有共享配置-如果您想使用来自web的队列,您还需要在
config/web.php
中配置它。。。谢谢然而,config/console.php中有很多代码。现在还不清楚我将如何将这个单一的(但很大的)返回语句放入其中。正在设置并返回一个变量$config$配置=['id'=>'basic console','basePath'=>dirname(DIR),'bootstrap'=>['log'],..@anroy将
queue
数组放入
components
@vishuB很简单,谢谢。在Yii2基本模板中,“bootstrap”和“components”数组已经填充了其他内容。因此,正如您所写,我在这些数组中添加了“queue”。但是现在在我的代码中,我尝试使用“queue”我收到一个找不到“\yii\queue\JobInterface”的错误。我声明“use\yii\queue\JobInterface”在PHP文件的顶部。有人知道这个问题的解决方案吗?或者我应该在StackOverflow中创建一个单独的问题吗?@anroy如果这个答案有用,那么标记为tick and upvote,因为它对另一个有用。请注意,基本模板没有共享配置-如果您想使用来自web的队列,您还需要在
config/web.php
。好的……谢谢。但是config/console.php中有很多代码。不清楚如何将单个(但很大的)return语句放入其中。设置并返回一个变量$config。$config=['id'=>'basic console','basePath'=>dirname(DIR),'bootstrap'=>['log'],..@anroy将
queue
数组放入
components
@vishuB很简单,谢谢。在Yii2基本模板中,“bootstrap”和“components”数组已经填充了其他内容。因此,正如您所写,我在这些数组中添加了“queue”。但是现在在我的代码中,我尝试使用“queue”我发现一个错误,它找不到“\yii\queue\JobInterface”。我在该PHP文件的顶部声明“use\yii\queue\JobInterface”。有人知道解决方法吗?或者我应该在StackOverflow中创建一个单独的问题吗?