php-redispub/sub 公开和订阅

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php-redispub/sub 公开和订阅相关的知识,希望对你有一定的参考价值。

网上大多的写法大多直接在终端里的写法,没有一个完整的浏览器直观的例子,直接上代码:

订阅

ini_set(‘default_socket_timeout‘, -1);
$redis = new Redis();
$redis->connect(‘127.0.0.1‘, 6379);
$redis->auth(‘lizongying‘);
$channel = ‘msg‘;
$redis->subscribe(array($channel), ‘callback‘);

function callback($redis, $channel, $message)
{
    if (ob_get_level() == 0) {
        ob_start();
    }
    echo str_pad(‘ ‘, 1024 * 8);
    echo date(‘Y-m-d H:i:s‘);
    var_dump($message);
    flush();
    ob_flush();
    ob_end_flush();
}

公开

$redis = new Redis();
$redis->connect(‘127.0.0.1‘,6379);
$redis->auth(‘lizongying‘);
$channel = ‘msg‘;  // channel
$msg = ‘33‘; // msg
$redis->publish($channel, $msg);
echo date(‘Y-m-d H:i:s‘);
var_dump($channel.$msg);

几个点:

1 在命名空间内

new \Redis();

2 如果有密码

$redis->auth(‘lizongying‘);

3 保证socket不超时

ini_set(‘default_socket_timeout‘, -1);

4 及时刷新 测试用的chrome buffer长度加到了1024*8才起作用 一些教程里是1024 或者 4096

    if (ob_get_level() == 0) {
        ob_start();
    }
    echo str_pad(‘ ‘, 1024 * 8);
    echo date(‘Y-m-d H:i:s‘);
    var_dump($message);
    flush();
    ob_flush();
    ob_end_flush();

保健食品注册咨询专家

本文出自 “9306413” 博客,请务必保留此出处http://9316413.blog.51cto.com/9306413/1754717

以上是关于php-redispub/sub 公开和订阅的主要内容,如果未能解决你的问题,请参考以下文章

电脑端微信不能打开订阅号的文章 一片空白?

订阅发生异常代理消息代码 20598,个人总结

将 S3 事件订阅到 SQS 队列而不向世界公开 SQS?

C#如何在DLL中公开事件

sh Reposync - 比mrepo更好的工具。使用此选项可以同步RHEL系统订阅的所有通道,并将它们转换为本地公开的y

[已解决]Pubsub 推送订阅不确认消息