yii2-queue使用教程
原创

yii2-queue消息队列使用教程,以下教程都以YII2基础版为例。在阅读教程前请确认已经能熟练使用YII2框架。

1、安装

composer require --prefer-dist yiisoft/yii2-queue
 2、配置
在config/console.php里添加驱动配置,为方便介绍,这里以file驱动为例,其他驱动请参考https://github.com/yiisoft/yii2-queue/blob/master/docs/guide-zh-CN/README.md
'bootstrap' => ['log', 'queue'],
'components' => [
    'queue' => [
        'class' => \yii\queue\file\Queue::class,
        'as log' => \yii\queue\LogBehavior::class,
        'path' => '@runtime/queue',
    ]
]

3、创建任务类
在app目录下新建jobs/DemoJob.php文件(目录和文件名均可随便写),内容如下:

<?php
namespace app\jobs;
use Yii;

class DemoJob extends \yii\base\BaseObject implements \yii\queue\JobInterface
{
    public $filename; //写入文件名
    public $message; //写入文件内容
    /**
     * @inheritdoc
     */
    public function execute($queue)
    {
        file_put_contents(Yii::getAlias("@runtime") . $this->filename,$this->message . PHP_EOL, FILE_APPEND);
    }
}
4、监听队列,在命令行里运行以下命令(linux系统)
php yii queue/listen

注意:yii2-queue依赖proc-open()和proc_get_status()函数,而这两个函数是默认关闭的,请在php.ini的disable_functions项中移除这两个函数,否则在运行该命令行时会报错。该命令在shell关闭时会自动停止,无法时时监控,这里可用crontab来定时执行此命令,也可以用workerman或swoole等来定时监控队列。

5、推送任务到队列,为方便演示这里以手动运行控制器作为演示

在控制器里里调用队列任务类,将任务推送到队列

Yii::$app->queue->push(new \app\jobs\DemoJob([
    'filename' => 'demo.txt',
    'message' => '队列执行成功',
]));

6、测试
运行控制器,可以观察到runtime目录下已经出现了写入文件demo.txt,内容为:队列执行成功,每运行一次就会尾部追加写入一次。

版权属于:够过瘾——挨踢男的葵花宝典

文章链接:http://www.gouguoyin.cn/php/148.html

转载时必须以链接形式注明原始出处及本声明。

如果您觉得本文对您有所帮助,请小额赞助一下,我会优先回答您在使用过程中出现的问题,点此赞助

如有疑问或遇到技术问题,请加官方QQ群: 421537504   GoCMS官方交流群

文章点评:

表情