/** * 设置/获取 配置 * array( * 'HelloWorld' => array( * 'addresses' => array( * '127.0.0.1:9090', * '127.0.0.2:9090', * '127.0.0.3:9090', * ), * ), * 'UserInfo' => array( * 'addresses' => array( * '127.0.0.1:9090' * ), * ), * ) * @param array $config * @return array */ public static function config(array $config = array()) { if (!empty($config)) { // 赋值 self::$config = $config; // 注册address到AddressManager $address_map = array(); foreach (self::$config as $key => $item) { $address_map[$key] = $item['addresses']; } AddressManager::config($address_map); } return self::$config; }
return true; } /** * 释放锁 * @return bool */ public static function releaseMutex() { ($fd = self::getSemFd()) && sem_release($fd); return true; } } // ================ 以下是测试代码 ====================== if (PHP_SAPI == 'cli' && isset($argv[0]) && $argv[0] == basename(__FILE__)) { AddressManager::config(array('HelloWorld' => array('127.0.0.1:9090', '127.0.0.2:9090', '127.0.0.3:9090'), 'HelloWorldService' => array('127.0.0.4:9090'))); echo "\n剔除address 127.0.0.1:9090 127.0.0.2:9090,放入故障address列表\n"; AddressManager::kickAddress('127.0.0.1:9090'); AddressManager::kickAddress('127.0.0.2:9090'); echo "\n打印故障address列表\n"; var_export(AddressManager::getBadAddressList()); echo "\n获取HelloWorld服务的一个可用address\n"; var_export(AddressManager::getOneAddress('HelloWorld')); echo "\n恢复address 127.0.0.2:9090\n"; var_export(AddressManager::recoverAddress('127.0.0.2:9090')); echo "\n打印故障address列表\n"; var_export(AddressManager::getBadAddressList()); echo "\n配置有更改,md5会改变,则故障address列表自动清空\n"; AddressManager::config(array('HelloWorld' => array('127.0.0.2:9090', '127.0.0.3:9090'))); echo "\n打印故障address列表\n"; var_export(AddressManager::getBadAddressList()); }