예제 #1
0
 /**
  * 设置/获取 配置
  *  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;
 }
예제 #2
0
        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());
}