You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
49 lines
1.4 KiB
49 lines
1.4 KiB
<?php
|
|
class LtCacheConfigBuilder
|
|
{
|
|
protected $servers = array();
|
|
|
|
protected $defaultConfig = array(
|
|
"adapter" => "phps", //apc,xcach,ea; file, phps; memcached
|
|
//"prefix" => ""
|
|
//"host" => "localhost", //some ip, hostname
|
|
//"port" => 3306,
|
|
);
|
|
|
|
public function addSingleHost($hostConfig)
|
|
{
|
|
$this->addHost("group_0", "node_0", "master", $hostConfig);
|
|
}
|
|
|
|
public function addHost($groupId, $nodeId = "node_0", $role = "master", $hostConfig)
|
|
{
|
|
if (isset($this->servers[$groupId][$nodeId][$role]))
|
|
{//以相同role的第一个host为默认配置
|
|
$ref = $this->servers[$groupId][$nodeId][$role][0];
|
|
}
|
|
else if ("slave" == $role && isset($this->servers[$groupId][$nodeId]["master"]))
|
|
{//slave host以master的第一个host为默认配置
|
|
$ref = $this->servers[$groupId][$nodeId]["master"][0];
|
|
}
|
|
else if (isset($this->servers[$groupId]) && count($this->servers[$groupId]))
|
|
{//以本group第一个node的master第一个host为默认配置
|
|
$refNode = key($this->servers[$groupId]);
|
|
$ref = $this->servers[$groupId][$refNode]["master"][0];
|
|
}
|
|
else
|
|
{
|
|
if (!isset($hostConfig["adapter"]))
|
|
{
|
|
trigger_error("No db adapter specified");
|
|
}
|
|
$ref = $this->defaultConfig;
|
|
}
|
|
$conf = array_merge($ref, $hostConfig);
|
|
$this->servers[$groupId][$nodeId][$role][] = $conf;
|
|
}
|
|
|
|
public function getServers()
|
|
{
|
|
return $this->servers;
|
|
}
|
|
} |