Php redis 订阅端异常,phpRedis 扩展的 subscribe 订阅疑惑

博客探讨了在使用Redis订阅通道时遇到的阻塞模式问题,导致没有返回值并最终出现readerroronconnection异常。作者尝试通过设置超时时间解决,但引发了502错误,可能是CGI和Nginx配置不兼容。解决方案可能涉及调整Redis客户端的超时设置或优化服务器配置以避免连接中断。
摘要由CSDN通过智能技术生成

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 又断开连接了。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值