Yii2 queue的队列使用详解
少废话主要看文档
官方文档
yii2-queue的使用
1.安装
composerrequire--prefer-distyiisoft/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, 'aslog'=>\yii\queue\LogBehavior::class,//错误日志默认为console/runtime/logs/app.log 'redis'=>'redis',//连接组件或它的配置 'channel'=>'queue',//Queuechannelkey ], ], ];
File作为驱动
return[ 'bootstrap'=>[ 'queue',//把这个组件注册到控制台 ], 'components'=>[ 'queue'=>[ 'class'=>\yii\queue\file\Queue::class, 'aslog'=>\yii\queue\LogBehavior::class,//错误日志默认为console/runtime/logs/app.log 'path'=>'@runtime/queue', ], ], ];
3.新建frontend/components/DownloadJob
classDownloadJobextendsBaseObjectimplements\yii\queue\JobInterface { public$url; public$file; publicfunctionexecute($queue) { file_put_contents($this->file,file_get_contents($this->url)); } }
4.控制台
控制台用于监听和处理队列任务。
cmd下监听队列
yiiqueue/listen
5.添加到队列
将任务添加到队列:
Yii::$app->queue->push(newfrontend\components\DownloadJob([ 'url'=>'http://example.com/image.jpg', 'file'=>'/tmp/image.jpg', ]));
将任务推送到队列中延时5分钟运行:
Yii::$app->queue->delay(5*60)->push(newfrontend\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
centos7supervisor的使用
1.安装supervisor
yumupdate yuminstallepel-release yuminstall-ysupervisor #开机启动 systemctlenablesupervisord #启动 systemctlstartsupervisord
2.supervisor命令
supervisorctlstatus查看进程状态 supervisorctlreload重启supervisord supervisorctlstart|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/yiiqueue/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
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。