protected static function select($a) { self::init(); if ($a === 'write') { if (self::$_writeConnected && self::$_last === 'write') { return; } foreach (self::$_mcs as $i => $c) { R::selectDatabase("write:{$i}"); if (R::testConnection()) { R::freeze(true); self::$_writeConnected = true; self::$_last = 'write'; return; } } throw new \Exception('Master DB have down'); } if ($a === 'read') { if (self::$_readConnected && self::$_last === 'read') { return; } foreach (self::$_scs as $i => $c) { R::selectDatabase("read:{$i}"); if (R::testConnection()) { R::freeze(true); self::$_readConnected = true; self::$_last = 'read'; return; } } throw new \Exception('Slave and master DB have down'); } }