欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

yii2-queue队列的使用及解释

程序员文章站 2022-03-14 14:57:56
...

1.队列是一种特殊的线性表,先进先出的数据结构。
2.队列数据元素又称为队列元素。在队列中插入一个队列元素称为入队,在队列中删除一个队列元素成为出队。因为队列只允许在一端插入,在另一端删除,所以只有最早进入队列的元素才能最先从队列中删除,故队列又称为先进先出线性表。
项目中使用:
1.配置文件中:

	 'queue' => [
             'class' => \yii\queue\redis\Queue::class,
            'channel' => 'admin.xiaolutg.cn',//项目访问地址
    ],
  1. 创建一个要执行操作得类,比如说优惠券自动过期事件
  2.  class ExpireCouponJob extends BaseObject implements JobInterface
      {
     	    public $couponId;
     	
     	    public function execute($queue)
     	    {
     	        $coupon = Coupon::findOne($this->couponId);
     	       //判断优惠券过期类型
     	        switch ($coupon->date_type) {
     	            case '2'://优惠券固定时长
     	                $expireDate = $coupon->fixed_end_at;
     	                break;
     	            case '1'://优惠券固定时间过期
     	            default:
     	                $expireDate = $coupon->end_at;
     	                break;
     	        }
     	        if ($expireDate < Carbon::now()->toDateTimeString()) {
     	            $coupon->status = 3;//已过期
     	            $coupon->save();
     	        }
     	    }
      }  
    

4.调用此事件

 \Yii::$app->queue->delay(5 * 60)->push(new ExpireCouponJob(['couponId' => $this->id]));
相关标签: queue