private function filterProviderUrls()

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;
	}