yii2-queue 學習筆記


參考https://github.com/yiisoft/yii2-queue/blob/master/docs/guide/README.md
一.基於redis

1.安裝redis ,並進行相關配置

2.yii2 項目中使用composer 安裝 yii2-redis

3.yii2 項目中使用compsoer 安裝yii2-queue

4.將redis和queue配置寫入文件例如在config中

$redis = require(__DIR__ . '/redis.php');
$queue = require(__DIR__ . '/queue.php');

  

web.php

'bootstrap' => ['log', 'queue'],
.....
'components' => [
'redis' => $redis,
'queue' => $queue,
....
]

  


queue.php

<?php

return [
'class' => 'yii\queue\redis\Queue',
'redis' => 'redis', // Redis connection component or its config
'channel' => 'queue', // Queue channel key
];

  

redis.php

<?php

return [
'class' => 'yii\redis\Connection',
'hostname' => '192.168.221.134',
'port' => 6379,
'database' => 0,
'password' => '123456'
];

  

5.新建任務類供具體代碼調用,例如在components中新建task目錄,並新建如下類

TesttaskJob.php
<?php

namespace app\components\task;

use Yii;
use yii\base\Object;
use app\models\MyTest;

class TesttaskJob extends Object implements \yii\queue\Job
{

public $name;
public $content;

public function execute($queue)
{
$mytest = new MyTest([
'name' => $this->name,
'content' => $this->content,
'created' => time(),
]);

$mytest->save();
}

}

  

調用部分

use app\components\task\TesttaskJob;

...
$job = new TesttaskJob([
'name' => 'zhangs',
'content' => 'ahjasdasdasd',
]);
$res = Yii::$app->queue->delay(2 * 60)->push($job);
...

  

6.服務器端 新建定時任務 后台執行 yii queue/listen ,執行了數個后台任務后可停止

yii queue/listen 5 //表示每隔5s監聽一次隊列
yii queue/run 運行隊列任務直到空,一般用於定時cron
yii queue/info 查看隊列狀態


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM