wayhood/yii2-queue

yii2 队列组件

安装数: 22,169

依赖: 0

推荐者: 0

安全性: 0

星标: 19

关注者: 6

分支: 11

开放性问题: 3

类型:yii2-extension

dev-master 2016-01-03 15:17 UTC

This package is auto-updated.

Last update: 2024-09-07 17:02:11 UTC


README

此组件提供简单的队列包装器

我推荐 yii2-asynctask.

要求

Redis yii2-redis

安装

安装此扩展的首选方式是通过 composer.

运行以下命令之一

php composer.phar require --prefer-dist wayhood/yii2-queue "*"

或在您的 composer.json 文件的 require 部分添加以下内容

"wayhood/yii2-queue": "*"

使用方法

要使用此扩展,只需在您的应用程序配置中添加以下代码

return [
    //....
    'components' => [
        'queue' => [
            'class' => 'wh\queue\RedisQueue',
        ],
        'redis' => [
            'class' => 'yii\redis\Connection',
            'hostname' => 'localhost',
            'port' => 6379,
            'database' => 0
        ],
    ],
];

首先创建一个 Job 处理类

namespace console\jobs;

class MyJob
{
    public function run($job, $data)
    {
        //process $data;
        var_dump($data);
    }
} 

然后将作业推送到队列

// Push job to the default queue and execute "run" method
Yii::$app->queue->push('\console\jobs\MyJob', ['a', 'b', 'c']);

// or push it and execute any other method
Yii::$app->queue->push('\console\jobs\MyJob@myMethod', ['a', 'b', 'c']);

// or push it to some specific queue
Yii::$app->queue->push('\console\jobs\MyJob', ['a', 'b', 'c'], 'myQueue');

// or both
Yii::$app->queue->push('\console\jobs\MyJob@myMethod', ['a', 'b', 'c'], 'myQueue');

在您的应用配置中映射控制台控制器

return [
    ...
    'controllerMap' => [
        'queue' => 'wh\queue\console\controllers\QueueController'
    ],
    ...
];

队列控制器的使用示例

# Process a job from default queue and than exit the process
./yii queue/work

# continuously process jobs from default queue
./yii queue/listen

# process a job from specific queue and than exit the process
./yii queue/work myQueue

# continuously process jobs from specific queue
./yii queue/listen myQueue