【yii2---queue】file类型队列

第一步:

安装扩展
composer.json中

require里面增加

"yiisoft/yii2-queue": "^2.3",

安装

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

yii原生的队列可以支持多种驱动,在配置前还是要先选好驱动。
1.File驱动

'queue' => [//队列文件方式
            'class' => \yii\queue\redis\Queue::class,
            'as log' => \yii\queue\LogBehavior::class,//错误日志 默认为 console/runtime/logs/app.log
            'channel' => 'test-queue', // 队列名称
        ],

2.Redis

'queue' => [//Redis方式
            'class' => \yii\queue\redis\Queue::class,
            'redis' => 'redis', //连接组件或他的配置
            'channel' => 'test-queue', // 队列名称
        ],

需要有对应redis的配置,config/web.php 类似

'redis' =>[
            'class' => 'yii\redis\Connection',
            'hostname' => '127.0.0.1',  //你的redis地址,windows建议使用127.0.0.1,否则会巨慢
            'port' => 6779, //端口
            'database' => 0,
            'password' => '123123',
        ],

该redis配置应该同步到console.php 这里会影响到队列的运行


第二步:

使用File类型做驱动举例,新建一个类TestJob.php

<?php
namespace app\jobs;

use yii\base\BaseObject;
use yii\queue\JobInterface;

class TestJob extends BaseObject implements JobInterface{
   
    public $orderInfo;

    public function execute($queue)
    {
        file_put_contents(\Yii::$app->basePath . DIRECTORY_SEPARATOR . 'runtime/logs/test-job-' . date('Y-m-d') . '.txt', "[" . date('Y-m-d H:i:s') . "]" ."这是一个测试". PHP_EOL, FILE_APPEND);
    }
}
?>

在controller里面调用该类:

Yii::$app->queue->push(new TestJob([
            'orderInfo' => $this->order
        ]));

那么问题来了,什么时候数据入队列?什么时候出队列?
首先可以使用 php yii queue/listen 监听队列,如果队列有值,会立马执行
还可以使用php yii queue/info 查看队列状态

第三步:

执行上述controller文件,前提要在控制台执行php yii queue/listen,这时就会发现队列已经执行了,log文件里面已经有内容了

截止到现在,只要队列里面有数据,就会被监听执行,那么如果想结束监听怎么办?

很简单啦,找到该监听进程 kill掉

ps aux | grep ‘queue/listen’

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值