如何使用predis多次发布

时间:2011-07-13 09:56:26

标签: php predis

如何在客户端多次发布信息?
我的意思是当我将信息从一个用户发布到另一个用户时,他收到并向后退,但这只是一次 因为当一个用户向另一个用户发送内容时,正在加载GET并且接收停止,我怎样才能这样做,以便客户端永远收到,而不仅仅是一次?

1 个答案:

答案 0 :(得分:6)

pub / sub如何工作:就像一个频道,你从一边放,你从另一边得到同样的。

因此,只有当有一些订阅者时才会收到发布者数据。

使用pubSub上下文并订阅频道说" x"从另一方面来说,继续从用户那里获取数据,并且每次使用发布命令将其发布到同一个频道。

订户:

$redis = new Predis\Client(// put setting here, if req);
$pubsub = $redis->pubSub();
$pubsub->subscribe($channel1);

foreach ($pubsub as $message)
{
    switch ($message->kind) {
        case 'subscribe':
            echo "Subscribed to {$message->channel}\n";
            break;

        case 'message':
            // do something
            break;
    }
}

出版商:

while(1) // or whatever condition
{

   $redis->publish($channel2, $userdata);

}

您可以使用聊天消息来断开连接,例如发布退出并在订阅者处检查是否退出然后关闭连接,然后在发布者端检查是否没有订户连接,也关闭它。