Е, не знам дали това ще проработи, но всъщност можете да опитате това:
1) създайте 2 групи настройки на база данни (в application/config/database.php):
// regular one..
$db['default']['hostname'] = 'localhost';
$db['default']['username'] = 'root';
//...
// second connection
$db['second']['hostname'] = 'localhost';
$db['second']['username'] = 'root';
//...
2) Изключете deubg, за да избегнете показването на db грешки и действителното убиване на вашия скрипт (направете го и за двете):
$db['default']['db_debug'] = FALSE;
3) Можете да подадете TRUE към втория параметър, докато зареждате библиотеката, така че тя действително да има върната стойност; той връща самия обект на базата данни:
$dbobject1 = $this->load->database('default',TRUE);
$dbobject2 = $this->load->database('second',TRUE);
Сега можете просто да проверите за ресурса „ID на връзката“, за да видите дали е установена връзка или не:
if(FALSE === $dbobject1->conn_id)
{
echo 'No connection established!';
}
Сега можете да решите да заредите друга DB, в случай че първата не се зареди. Недостатъкът обаче е, че всъщност не знаете защо db връзката не работи...
Що се отнася до това как да приложите това, може да искате да опитате да разширите класа на базата данни или, по-добре, да създадете своя собствена библиотека, която всъщност просто проверява дали връзката съществува или не, и заредете това вместо библиотеката на базата данни. Тъй като връща обект на база данни (освен когато всичките 2 връзки са неуспешни), тогава можете да работите върху това, както бихте направили с нормалния клас на база данни:
class Check_db {
private $CI = '';
public $DB1 = '';
public $DB2 = '';
function __construct()
{
$this->CI =&get_instance();
$this->DB1 = $this->CI->load->database('default',TRUE);
if(FALSE !== $this->DB1->conn_id)
{
return $this->DB1;
}
else
{
$this->DB2 = $this->CI->load->database('second',TRUE);
if(FALSE !== $this->DB2->conn_id)
{
return $this->DB2;
}
else
{
return FALSE;
}
}
}