先启动订阅者sub.php,使其处于阻塞运行等待的状态
然后执行发布者pub.php,向订阅了该频道的订阅者推送消息
#subscribe客服端 sub.php
$redis = new \Redis();
$res = $redis->pconnect('192.168.6.33', 6379);
$key = 'first';
#这里的subscribe是一个独占链接的,你在终端执行名“subscribe first” 后,屏幕将如同开启redis服务的终端一样,处于一直在线等一样。因此此处可以看出订阅者(客服端)的程序是以阻塞的方式等待,发布者的消息。
$redis->subscribe(array($key),'callback');
function callback($redis, $channel, $msg){
var_dump($redis);
echo $channel;
echo $msg;
return true;
}
#public客服端 pub.php
#无需独占链接,不是堵塞的
$redis = new \Redis();
$res = $redis->connect('192.168.6.33', 6379, 1 );
$key = 'first';//Channel 订阅这频道的订阅者,都能收收到消息
$value = 'hello world!';
$res = $redis->publish($key,$value);
执行后结果如下:
启动订阅者程sub.php使其处于等待状态:
执行发布者程序pub.php进行消息推送:
订阅者已接收到消息: