💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、豆包、星火、月之暗面及文生图、文生视频 广告
# 发布订阅 ``` <pre class="calibre29">``` <span class="token">//模糊匹配订阅(创建频道) cli客户端(订阅者)</span> <span class="token4">pSubscribe</span><span class="token3">(</span>patternArr <span class="token5">function</span><span class="token3">(</span>$redis<span class="token3">,</span> $pattern<span class="token3">,</span> $channel<span class="token3">,</span> $msg<span class="token3">)</span><span class="token3">{</span><span class="token3">}</span><span class="token3">)</span> <span class="token1">-</span> 订阅一个或多个符合给定模式的频道 re<span class="token1">*</span> 以re开头的频道<span class="token3">;</span> 回调中的任何非<span class="token5">null</span>返回值都将返回给调用者 <span class="token">//订阅(创建频道) cli客户端(订阅者)</span> <span class="token4">subscribe</span><span class="token3">(</span>channelArr<span class="token3">,</span><span class="token5">function</span><span class="token3">(</span>$redis<span class="token3">,</span> $channel<span class="token3">,</span> $msg<span class="token3">)</span><span class="token3">{</span><span class="token3">}</span><span class="token3">,</span>$instance<span class="token3">)</span> <span class="token1">-</span> 订阅<span class="token3">(</span>给定的一个或多个<span class="token3">)</span>频道的信息 此功能将来可能会发生变化 $redis<span class="token1">-</span><span class="token1">></span><span class="token4">subscribe</span><span class="token3">(</span> <span class="token3">[</span><span class="token2">'channel-1'</span><span class="token3">,</span> <span class="token2">'channel-2'</span><span class="token3">,</span> <span class="token2">'channel-3'</span><span class="token3">]</span><span class="token3">,</span> <span class="token5">function</span><span class="token3">(</span>$redis<span class="token3">,</span> $channel<span class="token3">,</span> $msg<span class="token3">)</span><span class="token3">{</span> echo $msg<span class="token3">;</span><span class="token">//subscribe 是阻塞模式的,一直不会结束,这个脚本执行在浏览器是看不到信息的。除非你在下面加上die。。。,所以只能用cli运行模式</span> <span class="token3">}</span><span class="token3">,</span> <span class="token3">)</span><span class="token3">;</span> 上面两个订阅是阻塞式的独占链接,需要在后台挂起 <span class="token">//发布消息 cli客户端(被订阅者 无需独占链接不是堵塞的)</span> <span class="token4">publish</span><span class="token3">(</span>channel<span class="token3">,</span> message<span class="token3">)</span> <span class="token1">-</span> 将信息message发送到指定的频道<span class="token4">channel</span><span class="token3">(</span>接收到信息message的订阅者数量<span class="token3">)</span> 警告:此功能将来可能会发生变化 $redis<span class="token1">-</span><span class="token1">></span><span class="token4">publish</span><span class="token3">(</span><span class="token2">'chan-1'</span><span class="token3">,</span> <span class="token2">'hello, world!'</span><span class="token3">)</span><span class="token3">;</span> <span class="token">// send message.</span> <span class="token4">pubSub</span><span class="token3">(</span>$keyWord <span class="token3">[</span><span class="token3">,</span>$argument<span class="token3">]</span><span class="token3">)</span> <span class="token1">-</span> Introspection into the pub<span class="token1">/</span>sub subsystem 查看订阅与发布系统状态 返回一个由活跃频道组成的列表 $argument<span class="token3">:</span>对于参数<span class="token6">1</span>是channels<span class="token3">,</span>您可以传递字符串模式<span class="token3">,</span>对于参数<span class="token6">1</span>是numsub 那么传递一个通道名称数组 返回值根据keyWord的不同而不同 CHANNELS<span class="token3">:</span>返回一个数组,其中成员是匹配的频道 NUMSUB<span class="token3">:</span>返回键<span class="token1">/</span>值数组,其中键是频道名称,值是它们的计数 NUMPAT<span class="token3">:</span>返回匹配的活跃订阅的整数 $redis<span class="token1">-</span><span class="token1">></span><span class="token4">pubSub</span><span class="token3">(</span><span class="token2">"channels"</span><span class="token3">)</span><span class="token3">;</span> <span class="token">//所有频道</span> $redis<span class="token1">-</span><span class="token1">></span><span class="token4">pubSub</span><span class="token3">(</span><span class="token2">"channels"</span><span class="token3">,</span> <span class="token2">"*pattern*"</span><span class="token3">)</span><span class="token3">;</span> <span class="token">//匹配包含pattern的频道</span> $redis<span class="token1">-</span><span class="token1">></span><span class="token4">pubSub</span><span class="token3">(</span><span class="token2">"numsub"</span><span class="token3">,</span> <span class="token3">[</span><span class="token2">"chan1"</span><span class="token3">,</span> <span class="token2">"chan2"</span><span class="token3">]</span><span class="token3">)</span><span class="token3">;</span> <span class="token">//获取'chan1' 和 'chan2'的订阅者</span> $redis<span class="token1">-</span><span class="token1">></span><span class="token4">pubSub</span><span class="token3">(</span><span class="token2">"numpat"</span><span class="token3">)</span><span class="token3">;</span> <span class="token">//获取匹配的订阅者数</span> ``` ```