如何在codeigniter php中处理连接错误


how to connection error handling in codeigniter php

我有两个服务器,并尝试连接第一个或第二个,如果第一个连接处于活动状态,则使用第一个连接id else连接到另一个服务器,但连接id不来?

这是我的配置/数据库.php

$db['slave01']['hostname'] = 'xx.xx.xxx.xx';
$db['slave01']['username'] = 'xxxxxx';
$db['slave01']['password'] = 'xxxx';
$db['slave01']['database'] = 'xxx';
$db['slave01']['dbdriver'] = 'mysql';
$db['slave01']['dbprefix'] = '';
$db['slave01']['pconnect'] = TRUE;
$db['slave01']['db_debug'] = FALSE;   // =>here set FALSE
$db['slave01']['cache_on'] = FALSE;
$db['slave01']['cachedir'] = '';
$db['slave01']['char_set'] = 'utf8';
$db['slave01']['dbcollat'] = 'utf8_general_ci';
$db['slave01']['swap_pre'] = '';
$db['slave01']['autoinit'] = TRUE;
$db['slave01']['stricton'] = FALSE;

另一个服务器详细介绍

    $db['slave02']['hostname'] = 'xx.xx.xxx.xx';
    $db['slave02']['username'] = 'xxxxxx';
    $db['slave02']['password'] = 'xxxx';
    $db['slave02']['database'] = 'xxx';
    $db['slave02']['dbdriver'] = 'mysql';
    $db['slave02']['dbprefix'] = '';
    $db['slave02']['pconnect'] = TRUE;
    $db['slave02']['db_debug'] = FALSE; // =>here set FALSE
    $db['slave02']['cache_on'] = FALSE;
    $db['slave02']['cachedir'] = '';
    $db['slave02']['char_set'] = 'utf8';
    $db['slave02']['dbcollat'] = 'utf8_general_ci';
    $db['slave02']['swap_pre'] = '';
    $db['slave02']['autoinit'] = TRUE;
    $db['slave02']['stricton'] = FALSE;

在控制器中

    $this->READ = $this->load->database('slave01', TRUE);
    if(!$this->READ->conn_id){
        echo "<br>Not connected";
        $this->READ = $this->load->database('slave02', TRUE);
    }else{
        echo "<br>Connected slave01 : ".$this->READ->conn_id;
    }
    echo "<br>Connected slave02 : ".$this->READ->conn_id;

但连接id未打印!我该如何解决?

由于您想知道初始化的响应,我建议关闭两个数据库连接的FALSE自动初始化

$db['slave01']['autoinit'] = FALSE;
// AND
$db['slave02']['autoinit'] = FALSE;


然后在检查数据库状态的代码中,检查initialize()函数的TRUE/FALSE:

$db_obj = $this->load->database('slave01',TRUE);
$connected = $db_obj->initialize();
if (!$connected) 
{
    $db_obj = $this->load->database('slave02',TRUE);
}
$db_obj->conn_id = ($db_obj->pconnect == FALSE) ? $db_obj->db_connect() : $db_obj->db_pconnect();
echo $db_obj->conn_id;