xxbutoo
V2EX  ›  PHP

phpRedis 的订阅模式疑问

By xxbutoo at 2021 年 2 月 17 日 · 2468 次点击

按照文档上的 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```

但是发布以后 就一直没有返回值了。等了一会后就会抛出 read error on connection 异常

 查了资料 subscribe 是阻塞模式 不会有返回值
 
 于是我设置了

// ini_set('default_socket_timeout', -1);

// $redis->setOption($redis::OPT_READ_TIMEOUT, -1);


执行后返回 502 了   脑瓜疼 cgi 和 nginx 又断开连接了。。
4 条回复  •  2021-02-17 21:53:05 +08:00
ferock
   1
ferock  
   2021 年 2 月 17 日 via iPhone
废话啊,fpm 模式下怎么可能不 timeout ? nginx 也会 timeout
ferock
   2
ferock  
   2021 年 2 月 17 日 via iPhone
你想玩这个只有 cli 模式下
2kCS5c0b0ITXE5k2
   3
2kCS5c0b0ITXE5k2  
   2021 年 2 月 17 日
请使用 php cli
xxbutoo
   4
xxbutoo  
OP
   2021 年 2 月 17 日
@ferock 是 哦是哦是哦是哦!
我搞傻了
© 2026 V2EX · 26ms · 3.9.8.5