Yii2.0 queue

https://www.yiichina.com/tutorial/1635php

https://my.oschina.net/gcdong/blog/3031113redis

https://www.yii-china.com/extend/detail/4bootstrap

yii2-queueyii2

安裝
首先得安裝,用的是composer,這個很簡單,在你的項目目錄下面
composer require --prefer-dist yiisoft/yii2-queueapp

##配置composer

找到你的項目配置文件,高級版是main.php,普通版console.php,在裏面加上你的配置,這個yii2-queue能夠使用各類驅動模式來作,我這裏選取了redis,因此你得必須先有redis,若是沒有能夠用file來驅動yii

// 把這個組件註冊到控制檯
'bootstrap' => [
'queue',
],
'components' => [
'queue' => [
'class' => \yii\queue\redis\Queue::class,
// 鏈接組件或它的配置
'redis' => 'redis',
// Queue channel key
'channel' => 'queue',
],
'queue' => [
'class' => \yii\queue\file\Queue::class,
// 鏈接組件或它的配置
'as log' => \yii\queue\LogBehavior::class,
'path' => '@runtime/queue',
],
'redis' => [
'class' => 'yii\redis\Connection',
'hostname' => 'localhost',
'port' => 6379,
'database' => 0,
]
]

使用
首先咱們得寫一個隊裏文件,裏面執行一個隊裏的任務,我這裏簡單的寫了一個ide

<?php
namespace common\components;
use yii\base\BaseObject;ui


class Job extends BaseObject implements \yii\queue\JobInterface
{
public $url;
public $file;this

public function execute($queue)
{
file_put_contents($this->file, file_get_contents($this->url));
}
}

上面是隊列執行的文件,咱們要使用它是這樣使用的,通常在控制器裏面使用

use common\components\Job;
public function actionJob(){
//添加任務到隊列
Yii::$app->queue->push(new Job([
'url' => 'http://img.netpc.com.cn/2018/06/12080502tmd.jpg',
'file' => '/www/project/ideaboat\1.jpg',
]));

}

// 延時5s觸發
Yii::$app->queue->delay(5)->push(new Job([
'url' => 'http://img.netpc.com.cn/2018/06/12080502tmd.jpg',
'file' => '/www/project/ideaboat\1.jpg',
]));
最後你還得在命令行把這個隊列的監聽監聽起來

./yii queue/listen這樣就能夠了

相關文章
相關標籤/搜索