What you have to update system/database/DB_Driver.php file.
Its very simple what you have to make 3 small changes in this file.
1) Inside Construction add your Read and Write server credentials.
$this->server_details['local_server']['hostname'] = "localhost";
$this->server_details['local_server']['username'] = "select_user";
$this->server_details['local_server']['password'] = "password";
$this->server_details['live_server']['hostname'] = "192.192.223.22";
$this->server_details['live_server']['username'] = "write_user";
$this->server_details['live_server']['password'] = "password";
2) Create New function will switch the database connection for select and write query.
private function ebrandz_switch_db_for_read_write($sql) {
if( $this->hostname == $this->server_details['local_server']['hostname'] && $this->username == $this->server_details['local_server']['username'] && $this->password == $this->server_details['local_server']['password'] ) {
//echo $sql.'<br/>';
if(stristr($sql, 'SELECT')) {
foreach($this->server_details['local_server'] as $index_key => $index_value ) {
$this->$index_key = $index_value;
}
$this->conn_id = null; //unset resource link
$this->initialize(); //Reinitialize connnection with new parameters
} else {
//die('write operation is not allowed.');
foreach($this->server_details['live_server'] as $index_key => $index_value ) {
$this->$index_key = $index_value;
}
$this->conn_id = null ; //unset resource link
$this->initialize(); //Reinitialize connnection with new parameters
}
} else if( $this->hostname == $this->server_details['live_server']['hostname'] && $this->username == $this->server_details['live_server']['username'] && $this->password == $this->server_details['live_server']['password'] ) {
if(stristr($sql, 'SELECT')) {
foreach($this->server_details['local_server'] as $index_key => $index_value ) {
$this->$index_key = $index_value;
}
$this->conn_id = null ; //unset resource link
$this->initialize(); //Reinitialize connnection with new parameters
} else {
//die('write operation is not allowed.');
foreach($this->server_details['live_server'] as $index_key => $index_value ) {
$this->$index_key = $index_value;
}
$this->conn_id = null ; //unset resource link
$this->initialize(); //Reinitialize connnection with new parameters
}
}
//Code to re initialize the connection
}
3) Inside Query function of this file you have to call the prevous defined function.
// Verify table prefix and replace if necessary
if ($this->dbprefix !== '' && $this->swap_pre !== '' && $this->dbprefix !== $this->swap_pre)
{
$sql = preg_replace('/(\W)'.$this->swap_pre.'(\S+?)/', '\\1'.$this->dbprefix.'\\2', $sql);
}
/**
* @author Anant Waykar
* if query is read only then load some other database
*/
$this->ebrandz_switch_db_for_read_write($sql);
//Code to re initialize the connection