symfony 1.3 + Propel 1.4 で MySQLレプリケーション
ProjectConfiguration.class.php
<?php public function setup() { $this->dispatcher->connect( 'propel.filter_connection_config', array($this, 'filterConnectionConfigEvent') ); } public function filterConnectionConfigEvent($event, $arguments) { if ($slaves = $event['database']->getParameter('slaves')) { if (isset($slaves['dsn'])) { $slaves = $this->mergeConnectionParams($arguments['connection'], $slaves); } else { foreach ($slaves as &$slave) { $slave = $this->mergeConnectionParams($arguments['connection'], $slave); } } $arguments['slaves']['connection'] = $slaves; } return $arguments; } protected function mergeConnectionParams($master_params, $slave_params) { if (isset($slave_params['username'])) { $slave_params['user'] = $slave_params['username']; unset($slave_params['username']); } return array_merge($master_params, $slave_params); }
all: propel: class: sfPropelDatabase param: dsn: mysql:dbname=jobeet;host=db-master;port=3306 username: usre password: pass encoding: utf8 pooling: true slaves: - dsn: mysql:dbname=jobeet;host=db-slave1;port=3307 username: user password: pass