您现在的位置是:群英 > 开发技术 > PHP语言
queue是什么及如何应用,如何在Yii中安装和配置
Admin发表于 2022-12-14 11:05:40590 次浏览
这篇文章给大家分享的是“queue是什么及如何应用,如何在Yii中安装和配置”,文中的讲解内容简单清晰,对大家学习和理解有一定的参考价值和帮助,有这方面学习需要的朋友,接下来就跟随小编一起学习一下“queue是什么及如何应用,如何在Yii中安装和配置”吧。

目录
  • 一、安装queue
  • 二、配置queue
  • 三、使用queue

一、安装queue

composer require yiisoft/yii2-queue

二、配置queue

安装queue之后我们在项目中运行 php yii时这时候我们发现没有queue的相关命令,这是怎么回事呢?

这是由于我们没有对queue进行配置

注意:这里配置queue时必须使得web和console都有关于queue的配置,例如yii的基础版的console.php和web.php文件都需要进行queue配置

yii的queue队列支持多种驱动,例:DB、Redis、RabbitMQ、AMQP、Beans.和Gearman

这里我是用的时DB(数据库)驱动,如果你想使用其他的驱动,配置相关可以参考:传送门

'bootstrap' => [
'queue'//注册控制台命令
],
'components' => [
        'queue' => [
            'class' => 'yii\queue\db\Queue',//需要引入的queue类
            'db' => 'db',//数据库配置
            'tableName' => '{{%queue}}',//需要新建的队列表名
            'channel' => 'test_db_queue',//队列频道密钥
            'mutex' => 'yii\mutex\MysqlMutex',//用于同步查询
            'ttr' => 300,//对应默认最大执行时长(秒)
        ],
    ],

配置完成之后,我们在命令行上执行 php yii时发现已经有了queue的相关命令了

queue相关命令说明:

php yii queue/clear #清除队列
php yii queue/exec #执行队列任务
php yii queue/info #显示有关队列状态的信息(默认为此命令)
php yii queue/listen #监听队列并运行队列任务
php yii queue/remove #按照id删除队列任务
php yii queue/run #运行所有队列任务

由于我们使用的时DB驱动这时候我们需要新建一个对应的queue队列表,在yii中queue的队列组件中提供了queue队列表创建的方法,我们只需要在脚本配置文件中进行配置即可,配置如下:

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

主要上述的配置不是在components的配置内部,而是与其同级,配置完成之后我们在命令行执行php yii发现如下命令queue-migrate,此命令就是帮助我们去新建一个queue队列数据表

php yii queue-migrate

这时候我们就可以在我们的数据库中发现对了一张queue表

三、使用queue

下面我写一个简单的下载文件队列进行测试

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:调用队列类:

Yii::$app->queue->push(new DownloadJob([
            'url' => 'https://api.wj0511.com/static/upload/pic/20181030132555-623070617127980.jpg',
            'file' => '/tmp/image.jpg',
        ]));
你也可以推迟指定秒执行
//推迟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',
        ]));

运行调用方法后,在命令行执行 php yii queue这时候我们会发现有一个等待的队列任务

这时候我们可以使用php yii queue/run 或php yii queue/listen去执行队列任务php yii queue/listen -v可以看到执行队列的信息


到此这篇关于“queue是什么及如何应用,如何在Yii中安装和配置”的文章就介绍到这了,感谢各位的阅读,更多相关queue是什么及如何应用,如何在Yii中安装和配置内容,欢迎关注群英网络资讯频道,小编将为大家输出更多高质量的实用文章!

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。

标签: Yii queue
相关信息推荐
2022-05-06 18:01:44 
摘要:3种方法:1、打开“php.ini”文件,修改“max_execution_time”项的值。2、用“ini_set("max_execution_time", "新数值");”修改。3、用“set_time_limit(新数值);”修改。
2022-05-18 14:08:38 
摘要:本篇文章带大家聊聊Golang的协程泄露,介绍一下Go怎么预防泄露,希望对大家有所帮助!
2022-11-01 17:32:47 
摘要:这篇文章介绍了WPF绘制矢量图形模糊问题的解决方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
云活动
推荐内容
热门关键词
热门信息
群英网络助力开启安全的云计算之旅
立即注册,领取新人大礼包
  • 联系我们
  • 24小时售后:4006784567
  • 24小时TEL :0668-2555666
  • 售前咨询TEL:400-678-4567

  • 官方微信

    官方微信
Copyright  ©  QY  Network  Company  Ltd. All  Rights  Reserved. 2003-2019  群英网络  版权所有   茂名市群英网络有限公司
增值电信经营许可证 : B1.B2-20140078   粤ICP备09006778号
免费拨打  400-678-4567
免费拨打  400-678-4567 免费拨打 400-678-4567 或 0668-2555555
微信公众号
返回顶部
返回顶部 返回顶部