發佈端publish.php
<?php
$channelName = "testPubSub";//頻道1
$channelName2 = "testPubSub2";//頻道2
try {
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
for ($i=0;$i<5;$i++){
$data = array('key' => 'key'.$i, 'data' => 'testmessage');
$ret = $redis->publish($channelName2, json_encode($data));
var_dump($ret);
}
} catch (Exception $e){
echo $e->getMessage();
}
訂閱端subscribe.php
<?php
set_time_limit(0);
//設置socket連接超時時間
ini_set('default_socket_timeout', -1);
//聲明測試頻道名稱
$channelName = "testPubSub";
$channelName2 = "testPubSub2";
try {
$redis = new Redis();
//建立一個長鏈接
$redis->pconnect('127.0.0.1', 6379);
//阻塞獲取消息
$redis->subscribe(array($channelName, $channelName2), function ($redis, $chan, $msg){
echo "channel:".$chan.",message:".$msg."\n";
});
} catch (Exception $e){
echo $e->getMessage();
}
- 命令行運行訂閱端
php subscribe.php
訪問發佈端
訂閱端接收信息