protected static function loadSlaveServers() { static $is_loaded = null; if ($is_loaded !== null) { return; } // Add here your slave(s) server(s) in this file if (file_exists(_PS_ROOT_DIR_ . '/config/db_slave_server.inc.php')) { self::$_servers = array_merge(self::$_servers, require _PS_ROOT_DIR_ . '/config/db_slave_server.inc.php'); } $is_loaded = true; }
/** * Get Db object instance * * @param bool $master Decides whether the connection to be returned by the master server or the slave server * @return Db instance */ public static function getInstance($master = true) { static $id = 0; // This MUST not be declared with the class members because some defines (like _DB_SERVER_) may not exist yet (the constructor can be called directly with params) if (!self::$_servers) { self::$_servers = array(array('server' => _DB_SERVER_, 'user' => _DB_USER_, 'password' => _DB_PASSWD_, 'database' => _DB_NAME_)); } $total_servers = count(self::$_servers); if ($master || $total_servers == 1) { $id_server = 0; } else { $id++; $id_server = $total_servers > 2 && $id % $total_servers != 0 ? $id : 1; } if (!isset(self::$instance[$id_server])) { $class = Db::getClass(); self::$instance[$id_server] = new $class(self::$_servers[$id_server]['server'], self::$_servers[$id_server]['user'], self::$_servers[$id_server]['password'], self::$_servers[$id_server]['database']); } return self::$instance[$id_server]; }