国产成人精品亚洲777人妖,欧美日韩精品一区视频,最新亚洲国产,国产乱码精品一区二区亚洲

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

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

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

一、安裝queue

composer require yiisoft/yii2-queue

二、配置queue

安裝queue之后我們在項目中運行 php yii時這時候我們發(fā)現(xiàn)沒有queue的相關(guān)命令,這是怎么回事呢?

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

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

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

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

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

配置完成之后,我們在命令行上執(zhí)行 php yii時發(fā)現(xiàn)已經(jīng)有了queue的相關(guān)命令了

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

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

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

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

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

php yii queue-migrate

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

三、使用queue

下面我寫一個簡單的下載文件隊列進(jìn)行測試

1:寫一個下載文件的隊列類:

<?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)用隊列類:

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",
]));

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

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

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

標(biāo)簽: PHP
主站蜘蛛池模板: 平舆县| 黑龙江省| 体育| 盘锦市| 康乐县| 泽普县| 健康| 天长市| 法库县| 清新县| 射洪县| 临城县| 蒲城县| 栾城县| 来安县| 乐陵市| 霍邱县| 南木林县| 墨江| 扶风县| 万州区| 渝中区| 梁平县| 武冈市| 阿拉善左旗| 丹巴县| 长丰县| 永昌县| 乌审旗| 宜阳县| 巴林右旗| 南部县| 永济市| 揭西县| 吉木萨尔县| 和硕县| 和顺县| 武安市| 盐津县| 绥江县| 海口市|