php-nacos icon indicating copy to clipboard operation
php-nacos copied to clipboard

获取服务下的健康的实例列表

Open joshua317 opened this issue 4 years ago • 3 comments

NacosConfig::setHost("http://127.0.0.1:8848/"); // 配置中心地址
//$healthyOnly值需要传递字符串的true,否则会导致传参的时候被http_build_query转为1导致nacos服务不识别此参数
$instances = NamingClient::listInstances("test-service", "true");

nacos api地址: https://nacos.io/zh-cn/docs/open-api.html

如果获取不到健康实例请注意下

joshua317 avatar Nov 02 '21 11:11 joshua317

微信截图_20211102195031 微信截图_20211102200040

joshua317 avatar Nov 02 '21 12:11 joshua317

php中 http_build_query会将array中boolean中true值转化成1,false转化成0.

joshua317 avatar Nov 03 '21 07:11 joshua317

src/alibaba/nacos/request/naming/NamingRequest.php文件中获取属性时对boolean值进行调整

   $properties = ReflectionUtil::getProperties($this);
        foreach ($properties as $propertyName => $propertyValue) {
            if (in_array($propertyName, $this->standaloneParameterList)) {
                // 忽略这些参数
            } else {
                //为避免布尔值传递的过程中转为整型,对boolean值进行强转字符串处理
                //php中 http_build_query会将array中boolean中true值转化成1,false转化成0.
                if (is_bool($propertyValue)) {
                    if ($propertyValue === true) {
                        $propertyValue = "true";
                    } else {
                        $propertyValue = "false";
                    }
                }
                $parameterList[$propertyName] = $propertyValue;
            }
        }
if ($this instanceof RegisterInstanceNaming) {
            if (NamingConfig::getEphemeral() === true) {
                $ephemeral = "true";
            } else {
                $ephemeral = "false";
            }
            $parameterList["ephemeral"] = $ephemeral;
        }

joshua317 avatar Nov 03 '21 08:11 joshua317