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