亚洲免费在线视频-亚洲啊v-久久免费精品视频-国产精品va-看片地址-成人在线视频网

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

Yii使用queue實(shí)現(xiàn)隊(duì)列流程講解

瀏覽:39日期:2022-06-06 08:35:44
目錄
  • 一、安裝queue
  • 二、配置queue
  • 三、使用queue

一、安裝queue

composer require yiisoft/yii2-queue

二、配置queue

安裝queue之后我們?cè)陧?xiàng)目中運(yùn)行 php yii時(shí)這時(shí)候我們發(fā)現(xiàn)沒(méi)有queue的相關(guān)命令,這是怎么回事呢?

這是由于我們沒(méi)有對(duì)queue進(jìn)行配置

注意:這里配置queue時(shí)必須使得web和console都有關(guān)于queue的配置,例如yii的基礎(chǔ)版的console.php和web.php文件都需要進(jìn)行queue配置

yii的queue隊(duì)列支持多種驅(qū)動(dòng),例:DB、Redis、RabbitMQ、AMQP、Beans.和Gearman

這里我是用的時(shí)DB(數(shù)據(jù)庫(kù))驅(qū)動(dòng),如果你想使用其他的驅(qū)動(dòng),配置相關(guān)可以參考:傳送門(mén)

"bootstrap" => [
"queue"http://注冊(cè)控制臺(tái)命令
],
"components" => [
"queue" => [
    "class" => "yii\queue\db\Queue",//需要引入的queue類(lèi)
    "db" => "db",//數(shù)據(jù)庫(kù)配置
    "tableName" => "{{%queue}}",//需要新建的隊(duì)列表名
    "channel" => "test_db_queue",//隊(duì)列頻道密鑰
    "mutex" => "yii\mutex\MysqlMutex",//用于同步查詢(xún)
    "ttr" => 300,//對(duì)應(yīng)默認(rèn)最大執(zhí)行時(shí)長(zhǎng)(秒)
],
    ],

配置完成之后,我們?cè)诿钚猩蠄?zhí)行 php yii時(shí)發(fā)現(xiàn)已經(jīng)有了queue的相關(guān)命令了

queue相關(guān)命令說(shuō)明:

php yii queue/clear #清除隊(duì)列
php yii queue/exec #執(zhí)行隊(duì)列任務(wù)
php yii queue/info #顯示有關(guān)隊(duì)列狀態(tài)的信息(默認(rèn)為此命令)
php yii queue/listen #監(jiān)聽(tīng)隊(duì)列并運(yùn)行隊(duì)列任務(wù)
php yii queue/remove #按照id刪除隊(duì)列任務(wù)
php yii queue/run #運(yùn)行所有隊(duì)列任務(wù)

由于我們使用的時(shí)DB驅(qū)動(dòng)這時(shí)候我們需要新建一個(gè)對(duì)應(yīng)的queue隊(duì)列表,在yii中queue的隊(duì)列組件中提供了queue隊(duì)列表創(chuàng)建的方法,我們只需要在腳本配置文件中進(jìn)行配置即可,配置如下:

"controllerMap" => [
"queue-migrate" => [
    "class" => "yii\console\controllers\MigrateController",
    "migrationPath" => null,
    "migrationNamespaces" => [
"yii\queue\db\migrations",
    ],
],
    ],

主要上述的配置不是在components的配置內(nèi)部,而是與其同級(jí),配置完成之后我們?cè)诿钚袌?zhí)行php yii發(fā)現(xiàn)如下命令queue-migrate,此命令就是幫助我們?nèi)バ陆ㄒ粋€(gè)queue隊(duì)列數(shù)據(jù)表

php yii queue-migrate

這時(shí)候我們就可以在我們的數(shù)據(jù)庫(kù)中發(fā)現(xiàn)對(duì)了一張queue表

三、使用queue

下面我寫(xiě)一個(gè)簡(jiǎn)單的下載文件隊(duì)列進(jìn)行測(cè)試

1:寫(xiě)一個(gè)下載文件的隊(duì)列類(lèi):

<?php
namespace app\components;
use Yii;
use yii\base\BaseObject;
/**
 * Class DownloadJob
 * @package app\components
 */
class DownloadJob extends BaseObject implements \yii\queue\JobInterface
{
    public $url;
    public $file;
    public function execute($queue)
    {
file_put_contents($this->file, file_get_contents($this->url));
    }
}

2:調(diào)用隊(duì)列類(lèi):

Yii::$app->queue->push(new DownloadJob([
    "url" => "https://api.wj0511.com/static/upload/pic/20181030132555-623070617127980.jpg",
    "file" => "/tmp/image.jpg",
]));
你也可以推遲指定秒執(zhí)行
//推遲5秒
Yii::$app->queue->delay(5 * 60)->push(new DownloadJob([
    "url" => "https://api.wj0511.com/static/upload/pic/20181030132555-623070617127980.jpg",
    "file" => "/tmp/image.jpg",
]));

運(yùn)行調(diào)用方法后,在命令行執(zhí)行 php yii queue這時(shí)候我們會(huì)發(fā)現(xiàn)有一個(gè)等待的隊(duì)列任務(wù)

這時(shí)候我們可以使用php yii queue/run 或php yii queue/listen去執(zhí)行隊(duì)列任務(wù)php yii queue/listen -v可以看到執(zhí)行隊(duì)列的信息

到此這篇關(guān)于Yii使用queue實(shí)現(xiàn)隊(duì)列流程講解的文章就介紹到這了,更多相關(guān)Yii queue內(nèi)容請(qǐng)搜索以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持!

標(biāo)簽: PHP
主站蜘蛛池模板: 一本久道久久综合婷婷 | 2021国产精品一区二区在线 | 国产精品久久久久久一区二区 | 亚洲成成品网站有线 | 久久国产成人精品麻豆 | 国产中文字幕在线播放 | 亚洲国产最新在线一区二区 | 欧美在线亚洲国产免m观看 欧美在线一级精品 | 国产偷国产偷亚洲高清在线 | 国产精品日本不卡一区二区 | 最新国产精品自拍 | 欧美日韩一区二区三区四区在线观看 | 国产一级做性视频 | 老色99久久九九精品尤物 | 一级黑人 | 特级深夜a级毛片免费观看 特级生活片 | a级国产乱理伦片在线 | 久久亚洲国产视频 | 在线亚洲精品自拍 | 国产精品视频99 | 精品在线视频播放 | 国产成人黄色 | 国产成人精品日本亚洲语音1 | 国产免费久久精品久久久 | 欧美日韩国产综合一区二区三区 | 自拍一区在线观看 | 精品久久久久久久久久香蕉 | 97视频免费在线 | 亚洲特级毛片 | 欧美成人毛片 | 精品视频免费在线 | 国产免费一级精品视频 | 日本aa毛片a级毛片免费观看 | 亚洲精品男人天堂 | 女人张开腿让男人桶视频 | a毛片a毛片a视频 | 在线观看精品国内福利视频 | 精品欧美日韩一区二区 | 精品国产欧美另类一区 | 亚洲免费美女视频 | 成人精品一区二区不卡视频 |