2021年1月

1.配置

安装yii2-queueyii2-redis,yii2-queue支持很多驱动,这里使用的是redis。
//在文件中配置queue模块
bootstrap => ['queue'],
components => [
    'queue' => [
        'class' => yii\queue\[drive]\Queue::class,
        'redis' => 'redis',
        'channel' => 'redis',
        'as log' => yii\queue\LogBehavior::class,
    ],
]

2.使用

a.创建job类
class MyJob extends BaseObject implements JobInterface //最主要要继承queue JobInterface
{
    public $url;
    public function execute($queue){
        echo $this->url;
    }
}
b.push到队列里
$id = Yii::$app->queue->push(new Myjob([
    'url' => 'awgwagwg'
]));
c.队列的一些状态
Yii::$app->queue->isWaiting($id);
Yii::$app->queue->isReserved($id);
Yii::$app->queue->isDone($id);

d.消费队列,在console里处理

$ php yii queue/run

//获取并执行队列,直到队列为空。适用于cron

$ php yii queue/listen [timeout]  //timeout下次查询时间

//启动一个守护进程,它可以无限查询队列。可以使用supervisor来实现
supervisor 官方文档
supervisor 云雀

产看更多