昨天测试 官方 Gateway client 总是间歇性连接失败抛异常;
getAllGatewayAddressesFromRegister fail. tcp://10.1.1.103:1236 return false
stream_set_timeout($client, 0.1);$ret = fgets($client, 655350);// var_dump($ret);if (!$ret || !$data = json_decode(trim($ret), true)) {// die("can not connect to getAllGatewayAddressesFromRegister");print_r('getAllGatewayAddressesFromRegister fail. tcp://' .self::$registerAddress . ' return ' . var_export($ret, true));}$last_update = $time_now;$addresses_cache = $data['addresses'];}return $addresses_cache;}}/*** 上下文 包含当前用户uid, 内部通信local_ip local_port socket_id ,以及客户端client_ip client_port*/
解决方案:
搜索 protected static function getAllGatewayAddressesFromRegister()
将
$expiration_time = 1;
改为
$expiration_time = 3;
stream_set_timeout($client, 1);
改为
stream_set_timeout($client, 3);
问题解决!
主要是因为stream_socket_client 的超时时间设置过短,过早的断开了连接
Free-Abc智能