【php-redis】pub/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();

保健食品註冊諮詢專家

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章