mirror of
https://we.phorge.it/source/phorge.git
synced 2024-12-28 16:30:59 +01:00
[phabricator] Add mysql slave and read-only database connections
Summary: Add ability to define mysql slaves and then use that connection on 'r' connection modes. 'w' connections go to the master server. Test Plan: - php -l and checkModule - worked in my devbox Reviewed By: jungejason Reviewers: dpepper, tuomaspelkonen, jungejason CC: jungejason, aran Revert Plan: sure Differential Revision: 175
This commit is contained in:
parent
6fb24ba4a4
commit
4a2981252f
3 changed files with 18 additions and 9 deletions
|
@ -111,6 +111,12 @@ return array(
|
||||||
// The MySQL server to connect to.
|
// The MySQL server to connect to.
|
||||||
'mysql.host' => 'localhost',
|
'mysql.host' => 'localhost',
|
||||||
|
|
||||||
|
// READ-ONLY database connection information
|
||||||
|
// If you have a read-only slave mysql server, then you can fill out the
|
||||||
|
// below fields. If not, duplicate the above information for the slave.
|
||||||
|
'mysql_slave.user' => 'root',
|
||||||
|
'mysql_slave.pass' => '',
|
||||||
|
'mysql_slave.host' => 'localhost',
|
||||||
|
|
||||||
// -- Email ----------------------------------------------------------------- //
|
// -- Email ----------------------------------------------------------------- //
|
||||||
|
|
||||||
|
|
|
@ -20,11 +20,15 @@
|
||||||
abstract class PhabricatorLiskDAO extends LiskDAO {
|
abstract class PhabricatorLiskDAO extends LiskDAO {
|
||||||
|
|
||||||
public function establishConnection($mode) {
|
public function establishConnection($mode) {
|
||||||
|
$mysql_key = 'mysql';
|
||||||
|
if ($mode == 'r') {
|
||||||
|
$mysql_key = 'mysql_slave';
|
||||||
|
}
|
||||||
return new AphrontMySQLDatabaseConnection(
|
return new AphrontMySQLDatabaseConnection(
|
||||||
array(
|
array(
|
||||||
'user' => PhabricatorEnv::getEnvConfig('mysql.user'),
|
'user' => PhabricatorEnv::getEnvConfig($mysql_key.'.user'),
|
||||||
'pass' => PhabricatorEnv::getEnvConfig('mysql.pass'),
|
'pass' => PhabricatorEnv::getEnvConfig($mysql_key.'.pass'),
|
||||||
'host' => PhabricatorEnv::getEnvConfig('mysql.host'),
|
'host' => PhabricatorEnv::getEnvConfig($mysql_key.'.host'),
|
||||||
'database' => 'phabricator_'.$this->getApplicationName(),
|
'database' => 'phabricator_'.$this->getApplicationName(),
|
||||||
));
|
));
|
||||||
|
|
||||||
|
|
|
@ -159,6 +159,8 @@ abstract class LiskDAO {
|
||||||
const IDS_PHID = 'ids-phid';
|
const IDS_PHID = 'ids-phid';
|
||||||
const IDS_MANUAL = 'ids-manual';
|
const IDS_MANUAL = 'ids-manual';
|
||||||
|
|
||||||
|
private $__connections = array();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Build an empty object.
|
* Build an empty object.
|
||||||
*
|
*
|
||||||
|
@ -601,14 +603,11 @@ abstract class LiskDAO {
|
||||||
throw new Exception("Unknown mode '{$mode}', should be 'r' or 'w'.");
|
throw new Exception("Unknown mode '{$mode}', should be 'r' or 'w'.");
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: We don't do anything with the read/write mode right now, but
|
if (!isset($this->__connections[$mode])) {
|
||||||
// should.
|
$this->__connections[$mode] = $this->establishConnection($mode);
|
||||||
|
|
||||||
if (!isset($this->__connection)) {
|
|
||||||
$this->__connection = $this->establishConnection($mode);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return $this->__connection;
|
return $this->__connections[$mode];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue