Yii2 queue的队列使用详解


Posted in PHP onJuly 19, 2019

少废话主要看文档

官方文档

yii2-queue 的使用

1.安装

composer require --prefer-dist yiisoft/yii2-queue

2.配置,在 common/config/main.php 中配置

redis作为驱动

return [
  'bootstrap' => [
    'queue', // 把这个组件注册到控制台
  ],
  'components' => [
    'redis' => [
      'class' => \yii\redis\Connection::class,
      // ...
    ],
    'queue' => [
      'class' => \yii\queue\redis\Queue::class,
      'as log' => \yii\queue\LogBehavior::class,//错误日志 默认为 console/runtime/logs/app.log
      'redis' => 'redis', // 连接组件或它的配置
      'channel' => 'queue', // Queue channel key
    ],
  ],
];

File 作为驱动

return [
  'bootstrap' => [
    'queue', // 把这个组件注册到控制台
  ],
  'components' => [
    'queue' => [
      'class' => \yii\queue\file\Queue::class,
      'as log' => \yii\queue\LogBehavior::class,//错误日志 默认为 console/runtime/logs/app.log
      'path' => '@runtime/queue',
    ],
  ],
];

3.新建 frontend/components/DownloadJob

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));
  }
}

4.控制台

控制台用于监听和处理队列任务。

cmd 下 监听队列

yii queue/listen

5.添加到队列

将任务添加到队列:

Yii::$app->queue->push(new frontend\components\DownloadJob([
  'url' => 'http://example.com/image.jpg',
  'file' => '/tmp/image.jpg',
]));

将任务推送到队列中延时5分钟运行:

Yii::$app->queue->delay(5 * 60)->push(new frontend\components\DownloadJob([
  'url' => 'http://example.com/image.jpg',
  'file' => '/tmp/image.jpg',
]));

6.测试

执行 5 中的程序,控制台监听到,便会后台自动 下载http://example.com/image.jpg到本地为/tmp/image.jpg

启动worker

可以使用Supervisor或Systemd 来启动多进程worker,也可以使用 Cron,我们这里主要说一下Supervisor

centos7 supervisor的使用

1.安装supervisor

yum update
yum install epel-release
yum install -y supervisor
#开机启动
systemctl enable supervisord
#启动
systemctl start supervisord

2.supervisor 命令

supervisorctl status 查看进程状态 
supervisorctl reload 重启supervisord 
supervisorctl start|stop|restart 启动关闭重启进程

3.添加配置文件

Supervisor 配置文件通常在 /etc/supervisord.d 目录下. 你可以创建一些配置文件在这里.

注:文件名是.ini结尾

下面就是个例子:

[program:yii-queue-worker]
process_name=%(program_name)s_%(process_num)02d
command=/usr/bin/php /var/www/my_project/yii queue/listen --verbose=1 --color=0
autostart=true
autorestart=true
user=www-data
numprocs=4
redirect_stderr=true
stdout_logfile=/var/www/my_project/log/yii-queue-worker.log

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
PHP安装全攻略:APACHE
Oct 09 PHP
利用PHP制作简单的内容采集器的代码
Nov 28 PHP
PHP下打开phpMyAdmin出现403错误的问题解决方法
May 23 PHP
使用php记录用户通过搜索引擎进网站的关键词
Feb 13 PHP
PHP+Mysql实现多关键字与多字段生成SQL语句的函数
Nov 05 PHP
php启用sphinx全文搜索的实现方法
Dec 24 PHP
php正则preg_replace_callback函数用法实例
Jun 01 PHP
帝国CMS留言板回复后发送EMAIL通知客户
Jul 06 PHP
php类中的$this,static,final,const,self这几个关键字使用方法
Dec 14 PHP
详解Yii2 定制表单输入字段的标签和样式
Jan 04 PHP
PHP命名空间简单用法示例
Dec 28 PHP
PHP中strval()函数实例用法
Jun 07 PHP
thinkphp5.1框架模板布局与模板继承用法分析
Jul 19 #PHP
Yii2.0框架模型添加/修改/删除数据操作示例
Jul 18 #PHP
Yii2.0框架模型多表关联查询示例
Jul 18 #PHP
php和redis实现秒杀活动的流程
Jul 17 #PHP
php web环境和命令行环境下查找php.ini的位置
Jul 17 #PHP
php命名空间设计思想、用法与缺点分析
Jul 17 #PHP
php和C#的yield迭代器实现方法对比分析
Jul 17 #PHP
You might like
东方红 - 来复式再生机的修复
2021/03/02 无线电
在laravel框架中使用model层的方法
2019/10/08 PHP
Laravel 6.2 中添加了可调用容器对象的方法
2019/10/22 PHP
学习ExtJS Window常用方法
2009/10/07 Javascript
window.ActiveXObject使用说明
2010/11/08 Javascript
jquery实现兼容浏览器的图片上传本地预览功能
2013/10/14 Javascript
JS从一组数据中找到指定的单条数据的方法
2016/06/02 Javascript
Html5+jQuery+CSS制作相册小记录
2016/12/30 Javascript
JavaScript中数组的各种操作的总结(必看篇)
2017/02/13 Javascript
Vue2单一事件管理组件通信
2017/05/09 Javascript
Angular2仿照微信UI实现9张图片上传和预览的示例代码
2017/10/19 Javascript
JS二分查找算法详解
2017/11/01 Javascript
js装饰设计模式学习心得
2018/02/17 Javascript
JS实现的简单下拉框联动功能示例
2018/05/11 Javascript
Vue.js 十五分钟入门图文教程
2018/09/12 Javascript
Python urlopen 使用小示例
2008/09/06 Python
Python映射拆分操作符用法实例
2015/05/19 Python
Python的Tornado框架实现图片上传及图片大小修改功能
2016/06/30 Python
pyqt5自定义信号实例解析
2018/01/31 Python
Python cookbook(字符串与文本)针对任意多的分隔符拆分字符串操作示例
2018/04/19 Python
python3+PyQt5图形项的自定义和交互 python3实现page Designer应用程序
2020/07/20 Python
ML神器:sklearn的快速使用及入门
2019/07/11 Python
Pytorch .pth权重文件的使用解析
2020/02/14 Python
pyspark对Mysql数据库进行读写的实现
2020/12/30 Python
探究 canvas 绘图中撤销(undo)功能的实现方式详解
2018/05/17 HTML / CSS
美国真皮手袋品牌:GiGi New York
2017/03/10 全球购物
Crocs美国官方网站:卡骆驰洞洞鞋
2017/08/04 全球购物
测绘工程个人的自我评价
2013/11/10 职场文书
会计自荐信范文
2014/03/09 职场文书
党员实事承诺书
2014/03/26 职场文书
广告艺术设计专业自荐书
2014/07/08 职场文书
工商管理专业毕业生自我鉴定2014
2014/10/04 职场文书
张家口市高新区党工委群众路线教育实践活动整改方案
2014/10/25 职场文书
四风问题专项整治工作情况报告
2014/10/28 职场文书
2014年乡镇安全生产工作总结
2014/12/02 职场文书
python数据库批量插入数据的实现(executemany的使用)
2021/04/30 Python