easyswoole 读取处理Redis的发布订阅信息
版本信息
swoole version 4.6.7
php version 7.4.20
easyswoole version 3.4.6
场景 以前总是用python 去处理一下redis订阅发布的数据信息 现在使用Eayswoole 框架的自定义进程 消费其订阅发布的信息 进而处理数据。
步骤如下:
在其App/Process 目录下 新增对象文件 如ToSubscribeRedis.php
<?php
namespace App\Process;
use EasySwoole\Component\Process\AbstractProcess;
use EasySwoole\EasySwoole\Config;
use Swoole\Coroutine;
use Swoole\Process;
use EasySwoole\RedisPool\RedisPool;
class ToSubscribeRedis extends AbstractProcess
{
public $dev;
protected function run($arg)
{
//$redis = RedisPool::defer("redis");
var_dump('### 开始运行redis自定义进程 start ###');
go(function () {
$redis = RedisPool::defer("redis");
$redis->subscribe(function (\EasySwoole\Redis\Redis $redis, $pattern, $str) {
$info = json_decode($str, true);
var_dump($info);
// $data = $redis->unsubscribe('subscribe_name');
//$redis->setSubscribeStop(true);
Coroutine::sleep(1);
}, 'subscribe_name');
});
}
public function onShutDown()
{
// TODO: Implement onShutDown() method.
}
public function onReceive(string $str, ...$args)
{
// TODO: Implement onReceive() method.
}
}
其中的var_dump($info); 就是其redis订阅发布的信息
重点:
在上面新建好ToSubscribeRedis.php 代码后,还需要注册 还可以使用!!
在框架根目录 EasyswooleEvent.php 中 在其mainServerCreate方法中添加如下行:
\EasySwoole\Component\Process\Manager::getInstance()->addProcess(new \App\Process\ToSubscribeRedis ('sub'));
完整的伪代码 如下:
<?php
namespace EasySwoole\EasySwoole;
use App\WebSocket\TCPParser;
use EasySwoole\EasySwoole\AbstractInterface\Event;
use EasySwoole\EasySwoole\Config;
use EasySwoole\EasySwoole\Swoole\EventRegister;
use EasySwoole\Http\Request;
use EasySwoole\Http\Response;
class EasySwooleEvent implements Event
{
public static function initialize()
{
date_default_timezone_set('Asia/Shanghai');
// 加载Config下所有配置
self::loadConfig();
}
public static function mainServerCreate(EventRegister $register)
{
//此处省略N多代码 ....
//注册redis订阅进程 读取redis 发布订阅信息
\EasySwoole\Component\Process\Manager::getInstance()->addProcess(new \App\Process\ToSubscribeRedis('sub'));
}
public static function loadConfig()
{
Config::getInstance()->loadDir(EASYSWOOLE_ROOT . '/Config');
}
}
然后重启框架
php easyswoole server start
就可以看到打印的那个信息了 。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库