Commit e1df1c81 authored by 秦俊坤's avatar 秦俊坤

兼容 hyperf 2.2 版本, 2.2 的 ServiceGovernance\Listener\RegisterServiceListener 和 2.1 的写法发生了差异

parent 158f1a89
...@@ -30,7 +30,7 @@ class RegisterServiceListener extends BaseRegisterServiceListener ...@@ -30,7 +30,7 @@ class RegisterServiceListener extends BaseRegisterServiceListener
*/ */
$host = isset($server['local_ip']) ? $server['local_ip'] : $server['host']; $host = isset($server['local_ip']) ? $server['local_ip'] : $server['host'];
if (in_array($host, ['0.0.0.0', 'localhost'])) { if (in_array($host, ['0.0.0.0', 'localhost'])) {
$host = $this->getInternalIp(); $host = $this->getRealInternalIp();
} }
if (!filter_var($host, FILTER_VALIDATE_IP)) { if (!filter_var($host, FILTER_VALIDATE_IP)) {
throw new \InvalidArgumentException(sprintf('Invalid host %s', $host)); throw new \InvalidArgumentException(sprintf('Invalid host %s', $host));
...@@ -45,4 +45,22 @@ class RegisterServiceListener extends BaseRegisterServiceListener ...@@ -45,4 +45,22 @@ class RegisterServiceListener extends BaseRegisterServiceListener
return $result; return $result;
} }
protected function getRealInternalIp()
{
if (method_exists(self::class, 'getInternalIp')) {
return $this->getInternalIp();
}
$ips = swoole_get_local_ip();
if (is_array($ips) && ! empty($ips)) {
return current($ips);
}
/** @var mixed|string $ip */
$ip = gethostbyname(gethostname());
if (is_string($ip)) {
return $ip;
}
throw new \RuntimeException('Can not get the internal IP.');
}
} }
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment