Yii2队列拓展 yii2-queue配置使用

composer安装

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

或者在composer.json添加:

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

项目配置

注册queue组件,redis配置,queue配置以及指定queue的驱动方式为redis

return [  
    'bootstrap'=> [
        'log',
        'queue',
    ],

    'components'=> [
        'redis'=>[
            'class'=>'yiiredisConnection',
            'hostname'=>'127.0.0.1',
            'port'=>6379,
            'database'=>0,
        ],

        'queue'=> [
            'class'=> yiiqueueredisQueue::class,
            'redis'=>'redis',// Redis connection component or its config
            'channel'=>'queue',// Queue channel key queue在redis中key的前缀
            'as log'=> yiiqueueLogBehavior::class,
        ],
    ],
];    

使用queue

定义类:

需要被发送到队列的任务应该定义为一个类,集成自yiibaseObject 实现yiiqueueJob接口(必须实现execute方法,实现该任务的动作)

class MailJobextends yiibaseObject implementsyiiqueueJob
{

    public$subject='这是邮箱标题';  
    public$body='<br>  
    邮箱主体<br>  
    time:';
    public$setTo= [];
    
    public functionexecute($queue)
    {
        //队列实例需要执行的代码体
        $mail= Yii::$app->mailer->compose();
        $mail->setTo($this->setTo);
        $mail->setSubject($this->subject);
        $this->body.= date('Y-m-d H:i:s',time());
        //$mail->setTextBody('zheshisha ');  //发布纯文字文本
        $mail->setHtmlBody($this->body);//发布可以带html标签的文本
        
        if($mail->send()) {
            echo"success";
        } else {
            echo"false";
        }
        //TODO: Implement execute() method.
        
    }

}

操作队列:

    //将作业推送到队列并获得其ID  
    $id= Yii::$app->queue->delay()->push(newMailJob([
        'setTo'=>'xxxx@gmail.com',
    ]));
    以下为获取该队列状态:
    
    //这个作业等待执行。
    Yii::$app->queue->isWaiting($id);
    // Worker从队列获取作业,并执行它。
    Yii::$app->queue->isReserved($id);
    // Worker作业执行完成。
    Yii::$app->queue->isDone($id);

控制台命令

控制台用于监听和处理队列任务。  
yii queue/listen [wait] 
//listen命令启动一个守护进程,它可以无限查询队列。如果有新的任务,他们立即得到并执行。 
//wait是下一次查询队列的时间 当命令正确地通过[supervisor](https://link.jianshu.com?t=https://github.com/yiisoft/yii2-queue/blob/master/docs/guide-zh-CN/worker.md#supervisor)来实现时,这种方法是最有效的。


yii queue/run
//run命令获取并执行循环中的任务,直到队列为空。适用与[cron](https://link.jianshu.com?t=https://github.com/yiisoft/yii2-queue/blob/master/docs/guide-zh-CN/worker.md#cron)。

run与listen命令的参数:
--verbose,-v: 将执行状态输出到控制台。
--isolate: 详细模式执行作业。如果启用,将打印每个作业的执行结果。
--color: 高亮显示输出结果。

yii queue/info //info命令打印关于队列状态的信息。

业务可在crontab中建立定时执行该命令,即可按入队顺序执行脚本

https://github.com/yiisoft/yii2-queue
Responses
  1. [url=https://cialisdpill.com/]tadalafil 5mg price in india[/url] [url=https://sildenafilfp.com/]cheap viagra paypal[/url] [url=https://viagrahtab.com/]can you buy over the counter viagra[/url] [url=https://unocialis.com/]tadalafil australia[/url]

    Reply
  2. [url=https://wbapharmacy.com/]canadian pharmacy 365[/url] [url=https://viagraoft.com/]cheapest generic viagra online[/url] [url=https://healthsupl.com/]modafinil online pharmacy uk[/url] [url=https://kamagrabuyonline.com/]kamagra oral jelly dangers[/url] [url=https://eccpharm.com/]prednisone 20mg by mail without prescription[/url] [url=https://medicinecialis.com/]tadalafil online without a script[/url] [url=https://sildenafileasy.com/]1 sildenafil[/url]

    Reply
  3. [url=https://wbapharmacy.com/]which online pharmacy is reliable[/url] [url=https://cialisdf.com/]cheap generic cialis canadian pharmacy[/url] [url=https://cialissearch.com/]buy cialis for daily use[/url] [url=https://ivermectinzt.com/]stromectol prices[/url] [url=https://cialisfmed.com/]buy brand cialis[/url]

    Reply
  4. [url=http://sildenafilfp.com/]viagra online india price[/url]

    Reply
  5. [url=https://pviagra.com/]where can you buy real viagra online[/url]

    Reply
  6. [url=http://sildenafileasy.com/]sildenafil 220[/url] [url=http://healthsupl.com/]provigil online purchase[/url] [url=http://tadalafilxt.com/]tadalafil generic[/url] [url=http://sildenafilfp.com/]female viagra for sale[/url] [url=http://buyrxtablets.com/]clomid 50g[/url] [url=http://cialismedicine.com/]discount cialis pills[/url] [url=http://ivermectinop.com/]cost of ivermectin 1% cream[/url] [url=http://opivermectin.com/]stromectol 3 mg tablets price[/url] [url=http://pviagra.com/]12.5 mg viagra daily[/url] [url=http://cialisextr.com/]generic cialis 20 mg safe website[/url]

    Reply