dejvidecz/yii2-queue

支持DB、Redis、RabbitMQ、Beanstalk和Gearman的Yii2队列扩展

安装: 428

依赖: 0

建议者: 0

安全: 0

星标: 0

关注者: 2

分支: 295

类型:yii2-extension

2.0.2.1 2018-06-14 22:17 UTC

README

Yii2队列扩展


一个用于通过队列异步执行任务的扩展。

它支持基于 DBRedisRabbitMQBeanstalkGearman 的队列。

文档在 docs/guide/README.md

Latest Stable Version Total Downloads Build Status

安装

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

运行以下命令

php composer.phar require --prefer-dist yiisoft/yii2-queue

或者

"yiisoft/yii2-queue": "~2.0.0"

将以下内容添加到您的 composer.json 文件的require部分。

基本用法

每个发送到队列的任务都应该定义为单独的类。例如,如果您需要下载并保存文件,类可能如下所示

class DownloadJob extends BaseObject implements \yii\queue\JobInterface
{
    public $url;
    public $file;
    
    public function execute($queue)
    {
        file_put_contents($this->file, file_get_contents($this->url));
    }
}

以下是向队列发送任务的方法

Yii::$app->queue->push(new DownloadJob([
    'url' => 'http://example.com/image.jpg',
    'file' => '/tmp/image.jpg',
]));

将作业推送到队列,5分钟后执行

Yii::$app->queue->delay(5 * 60)->push(new DownloadJob([
    'url' => 'http://example.com/image.jpg',
    'file' => '/tmp/image.jpg',
]));

任务的确切执行方式取决于所使用的驱动程序。大部分驱动程序都可以通过组件在您的应用程序中注册的命令行来运行。

循环获取并执行任务的命令

yii queue/run

启动无限查询队列的守护进程的命令

yii queue/listen

有关驱动程序命令行和它们的选项的更多详细信息,请参阅文档。

组件具有跟踪推送到队列的作业状态的能力。

// Push a job into queue and get message ID.
$id = Yii::$app->queue->push(new SomeJob());

// The job is waiting for execute.
Yii::$app->queue->isWaiting($id);

// Worker gets the job from queue, and executing it.
Yii::$app->queue->isReserved($id);

// Worker has executed the job.
Yii::$app->queue->isDone($id);

有关更多详细信息,请参阅 指南