Yii yii2-queue 基本使用

本文介绍如何在Yii2框架中安装并配置队列组件,包括使用Composer安装、配置不同类型的队列如DB队列,并通过gii工具创建job类来推送任务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 安装:

   执行命令

php composer.phar require --prefer-dist yiisoft/yii2-queue
  或者添加
"yiisoft/yii2-queue": "~2.1"

  到 composer.json 文件

2.配置:

  yii2-queue 可选驱动有  DB, Redis, RabbitMQ, AMQP, Beanstalk and Gearman.  也可配置成 sync

 

DB 队列:

首先配置 console

'controllerMap' => [
        // ...
        'migrate' => [
            'class' => yii\console\controllers\MigrateController::class,
            'migrationPath' => null,
            'migrationNamespaces' => [
                // ...
                'yii\queue\db\migrations',
            ],
        ],
    ],

可以在console中 使用数据库迁移工具迁移数据库

 

配置gii 

'modules' => [
        'gii' => [
            'class' => 'yii\gii\Module',
            'generators' => [
               'jobs' => yii\queue\gii\Generator::class,
            ],
        ]

    ],

可以通过gii 创建job文件

 

取一个名字配置到 components 作为一个组件 

'queue' => [
            'class' => yii\queue\db\Queue::class,
        ],
 'mutex' => yii\mutex\MysqlMutex::class,

 

  使用:

 通过 gii创建一个job类

namespace frontend\jobs;

/**
 * Class TestJob.
 */
class TestJob extends \yii\base\BaseObject implements \yii\queue\JobInterface
{
    public $prop1;

    public $prop2;

    /**
     * @inheritdoc
     */
    public function execute($queue)
    {

    }
}

 

push任务

 Yii::$app->queue->push(new TestJob(
            [
                'prop1' => 1,
                'prop2' => 2,
            ]

        ));

 

转载于:https://www.cnblogs.com/apper/p/9191699.html

Yii2-queue是一个基于PHP的队列系统,它允许您将耗时的任务异步处理,提高应用程序性能并优化资源利用。Yii2框架集成这个组件,使得任务的分发、消费以及错误处理变得简单。 以下是使用Yii2-queue基本步骤: 1. **安装**: 首先,在终端中运行`composer require --prefer-dist yiisoft/yii2-queue`命令来安装该扩展。 2. **配置**: - 在`config/web.php`中添加`queue`部分到应用配置中,指定消息队列的连接信息(如Redis、AMQP等): ```php 'components' => [ 'queue' => [ 'class' => 'yii\queue\RedisQueue', // 连接配置... ], // 其他配置... ] ``` - 如果你想支持异步任务,记得开启相应的中间件(例如,web服务器需要支持HTTP长轮询)。 3. **创建任务类**: 创建一个实现了`yii\queue\QueueInterface`接口的类,通常包含`execute()`方法来实际执行业务逻辑: ```php namespace app\jobs; class MyJob implements \yii\queue.QueueInterface { public function execute($payload) { // 执行任务代码... } // 可选的其他方法... } ``` 4. **调度任务**: 使用`yii\queue\Worker`来启动队列工作进程,你可以设置定时任务来定期检查并处理队列: ```php use Yii; $worker = new Worker([ 'queue' => ['default'], // 指定队列名称 ]); $worker->run(); ``` 或者通过命令行工具 `yiic queue/poller` 来监控队列。 5. **发送任务**: 在需要异步处理的地方,使用`Yii::$app->queue->push()`方法将任务推入队列: ```php $job = Yii::$app->queue->push(new MyJob(), 'my_queue'); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值