in registry/automatic/ConsumerProxy.php [65:112]
private function filterProviderUrls($providerInfo, $version, $group, $service)
{
$urls = array();
if (is_array($providerInfo))
{
foreach ($providerInfo as $index => $url)
{
try
{
$urlObj = new FSOFUrl($url);
if (!empty($urlObj))
{
//服务校验
if (0 == strncmp($urlObj->getService(), $service, strlen($service)))
{
//服务Version强校验
if ($version == $urlObj->getVersion(FSOFConstants::FSOF_SERVICE_VERSION_DEFAULT))
{
if ($group == FSOFConstants::FSOF_SERVICE_GROUP_ANY || $group == $urlObj->getGroup(FSOFConstants::FSOF_SERVICE_GROUP_DEFAULT))
{
$urls[] = $urlObj;
if($this->logger->isDebugEnabled()){
$this->logger->debug("find provider form redis for [$service:$version:$group],url:".json_encode($url,true));
}
}
}
}
else
{
//数据出现乱序关闭连接
FSOFRedis::instance()->close();
$this->logger->error('get redis data exception, service:'.$service.'; redis data list:'.json_encode($providerInfo,true));
break;
}
}
}
catch (\Exception $e)
{
$this->logger->error('error of url:' . $url, $e);
}
}
}
if (empty($urls))
{
$this->logger->warn('version:' .$version. ' group:' .$group. ' service:' .$service. ' get Provider Info from redis is empty.');
}
return $urls;
}