網上大多的寫法大多直接在終端裏的寫法,沒有一個完整的瀏覽器直觀的例子,直接上代碼:
訂閱
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();