按照文档上的 demo https://github.com/phpredis/phpredis#connect-open
function f($redis, $chan, $msg) {
switch($chan) {
case 'chan-1':
...
break;
case 'chan-2':
...
break;
case 'chan-2':
...
break;
}
}
$redis->subscribe(['chan-1', 'chan-2', 'chan-3'], 'f'); // subscribe to 3 chans```
我的 demo 如下:
$r = new Redis();
$r->pconnect('127.0.0.1', '6379');
$r->auth('test123456');
$r->subscribe(['chan-1', 'chan-2', 'chan-3'], function() {
switch($chan) {
case 'chan-1':
file_put_contents('./tt.txt', '订阅消息 1' . $msg . "\n", FILE_APPEND);
break;
case 'chan-2':
file_put_contents('./tt.txt', '订阅消息 2' . $msg . "\n", FILE_APPEND);
break;
case 'chan-2':
file_put_contents('./tt.txt', '订阅消息 3' . $msg . "\n", FILE_APPEND);
break;
}
});
但是发布以后 就一直没有返回值了。等了一会后就会抛出 read error on connection 异常
查了资料 subscribe 是阻塞模式 不会有返回值
于是我设置了
ini_set('default_socket_timeout', -1);
$r->setOption($r::OPT_READ_TIMEOUT, -1);
执行后返回 502 了 脑瓜疼 cgi 和 nginx 又断开连接了。。
1
2kCS5c0b0ITXE5k2 2021-02-17 20:55:32 +08:00
请用 php CLI
|
2
gbqqaybc 2021-02-17 21:04:13 +08:00
|