当前位置: 首页 > 后端技术 > PHP

Yii2队列的队列使用

时间:2023-03-29 20:12:59 PHP

专栏文章备份:https://www.bestyii.com/topic/7废话少说,主要看官方文档https://github.com/yiisoft/yi...yii2-queue的使用1.安装composerrequire——-prefer-distyiisoft/yii2-queue2。配置,在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',//队列通道键],],];文件作为驱动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/DownloadJobclassDownloadJobextendsBaseObjectimplements\yii\queue\JobInterface{public$url;公共$文件;publicfunctionexecute($queue){file_put_contents($this->file,file_get_contents($this->url));}}4.控制台控制台用于监控和处理队列任务。cmdyiiqueue/listen5下监听队列。添加到队列添加任务到队列:Yii::$app->queue->push(newfrontend\components\DownloadJob(['url'=>'http://example.com/image.jpg','文件'=>'/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...启动一个worker,可以使用Supervisor或者Systemd启动一个multi-processworker,也可以使用cron,我们主要说supervisorcentos7supervisor的使用1.安装supervisoryumupdateyuminstallepel-releaseyuminstall-ysupervisor#Boot启动systemctlenablesupervisord#Startsystemctlstartsupervisord2.supervisor命令supervisorctlstatus查看进程状态  supervisorctlreload重启supervisordsupervisorctlstart|stop|restart启动shutdown重启进程3.添加配置文件Supervisor的配置文件一般在/etc/supervisord。d目录。您可以在此处创建一些配置文件。注意:文件名以.ini结尾,示例如下:[program:yii-queue-worker]process_name=%(program_name)s_%(process_num)02dcommand=/usr/bin/php/var/www/my_project/yiiqueue/listen--verbose=1--color=0autostart=trueautorestart=trueuser=www-datanumprocs=4redirect_stderr=truestdout_logfile=/var/www/my_project/log/yii-queue-worker.log