首页
关于
留言
友链
电台
壁纸
我的足迹
推荐
知易而行MCP
Search
1
乐橙CMS影视管理系统最全版本
109,277 阅读
2
VIP视频解析破解电影解析模拟破解影视解析
77,795 阅读
3
乐橙CMS影视管理系统4.0.18版本
16,934 阅读
4
新浪图片链接修复教程集合
15,125 阅读
5
反调试代码调试死机代码禁止F12代码
12,093 阅读
语言
PHP
Java
Go
JavaScript
CSS
Vue
资源教程
网络杂谈
技术文章
影视交流
软件工具
Mac
知易而行
登录
Search
标签搜索
PHP
AI
LINUX
微信
MYSQL
OpenClaw
ESP32S3
小智AI
P2P
JS
破解
乐橙cms
支付
uniapp
人工智能
技术趋势
智能玩具
公众号
typecho
xshell
子沐~
累计撰写
121
篇文章
累计收到
372
条评论
首页
栏目
语言
PHP
Java
Go
JavaScript
CSS
Vue
资源教程
网络杂谈
技术文章
影视交流
软件工具
Mac
知易而行
页面
关于
留言
友链
电台
壁纸
我的足迹
推荐
知易而行MCP
搜索到
1
篇与
的结果
2023-01-06
Think-swoole集成think-queue由于配置问题造成的队列无法监听解决办法
2023-01-06T05:46:39.png问题:如上图所示官方说的queue已经在think-swoole中集成了,但是我们将此配置在swoole.php中更改后,创建完任务后,队列不执行。原因:queue.php的配置和swoole.php的配置不一致造成的。queue配置'connections' => [ 'sync' => [ 'type' => 'sync', ], 'database' => [ 'type' => 'database', 'queue' => 'zimuoo', 'table' => 'jobs', 'connection' => null, ], 'redis' => [ 'type' => 'redis', 'queue' => "zimuoo", 'host' => env('REDIS.REDIS_HOST', '127.0.0.1'), 'port' => env('REDIS.PORT', 6379), 'password' => env('REDIS.REDIS_PASSWORD', ''), 'select' => env('REDIS.SELECT', 0), 'timeout' => 0, 'persistent' => false, ], ],swoole配置//队列 'queue' => [ 'enable' => true, //键名是队列名称 'workers' => [ //下面参数是不设置时的默认配置 'default' => [ 'delay' => 0, 'sleep' => 3, 'tries' => 0, 'timeout' => 60, 'worker_num' => 3, ], //使用@符号后面可指定队列使用驱动 'default@connection' => [ //此处可不设置任何参数,使用上面的默认配置 ], ], ],代码分析先看看think-swoole的启动命令文件中的queue监听,分析代码可以发现队列是queue [$queue],但是咱们两边配置不一样,一个是zimuoo,一个是default,造成任务创建了,但是不执行。protected function createQueueWorkers() { $workers = $this->getConfig('queue.workers', []); foreach ($workers as $queue => $options) { if (strpos($queue, '@') !== false) { [$queue, $connection] = explode('@', $queue); } else { $connection = null; } $workerNum = Arr::get($options, 'worker_num', 1); $this->addBatchWorker($workerNum, function (Process\Pool $pool) use ($options, $connection, $queue) { $delay = Arr::get($options, 'delay', 0); $sleep = Arr::get($options, 'sleep', 3); $tries = Arr::get($options, 'tries', 0); $timeout = Arr::get($options, 'timeout', 60); /** @var Worker $worker */ $worker = $this->app->make(Worker::class); while (true) { $timer = Timer::after($timeout * 1000, function () use ($pool) { $pool->getProcess()->exit(); }); $this->runWithBarrier([$this, 'runInSandbox'], function () use ($connection, $queue, $delay, $sleep, $tries, $worker) { $worker->runNextJob($connection, $queue, $delay, $sleep, $tries); }); Timer::clear($timer); } }, "queue [$queue]"); } }解决只需要将 swoole.php中的队列驱动更改为一直即可。default=>zimuoo
2023年01月06日
2,149 阅读
0 评论
0 点赞