/** * Gets an already-opened read PDO connection or opens a new one for passed-in db name. * * @param string $name The datasource name that is used to look up the DSN * from the runtime configuation file. Empty name not allowed. * * @return PDO A database connection * * @throws PropelException - if connection cannot be configured or initialized. */ public static function getSlaveConnection($name) { if (!isset(self::$connectionMap[$name]['slave'])) { $slaveconfigs = isset(self::$configuration['datasources'][$name]['slaves']) ? self::$configuration['datasources'][$name]['slaves'] : null; if (empty($slaveconfigs)) { // no slaves configured for this datasource // fallback to the master connection self::$connectionMap[$name]['slave'] = self::getMasterConnection($name); } else { // Initialize a new slave if (isset($slaveconfigs['connection']['dsn'])) { // only one slave connection configured $conparams = $slaveconfigs['connection']; } else { // more than one sleve connection configured // pickup a random one $randkey = array_rand($slaveconfigs['connection']); $conparams = $slaveconfigs['connection'][$randkey]; if (empty($conparams)) { throw new PropelException('No connection information in your runtime configuration file for SLAVE [' . $randkey . '] to datasource [' . $name . ']'); } } // initialize slave connection $con = Propel::initConnection($conparams, $name); self::$connectionMap[$name]['slave'] = $con; } } // if datasource slave not set return self::$connectionMap[$name]['slave']; }