ठीक है, मुझे नहीं पता कि यह काम करेगा या नहीं, लेकिन आप वास्तव में इसे आजमा सकते हैं:
1) डेटाबेस सेटिंग्स के 2 समूह बनाएं (एप्लिकेशन/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['default']['db_debug'] = FALSE;
3) लाइब्रेरी लोड करते समय आप दूसरे पैरामीटर को TRUE पास कर सकते हैं, ताकि इसका वास्तव में रिटर्न वैल्यू हो; यह डेटाबेस ऑब्जेक्ट को ही लौटाता है:
$dbobject1 = $this->load->database('default',TRUE);
$dbobject2 = $this->load->database('second',TRUE);
अब, आप केवल यह देखने के लिए "कनेक्शन आईडी" संसाधन की जांच कर सकते हैं कि कोई कनेक्शन स्थापित किया गया था या नहीं:
if(FALSE === $dbobject1->conn_id)
{
echo 'No connection established!';
}
यदि पहले लोड नहीं होता है तो अब आप एक और डीबी लोड करने का निर्णय ले सकते हैं। नकारात्मक पक्ष यह है कि, आप वास्तव में नहीं जानते कि डीबी कनेक्शन क्यों काम नहीं कर रहा है, हालांकि...
इसे कैसे कार्यान्वित किया जाए, इसके लिए आप डेटाबेस वर्ग को विस्तारित करने का प्रयास कर सकते हैं या बेहतर, अपनी खुद की लाइब्रेरी बना सकते हैं जो वास्तव में केवल यह जांचता है कि कोई कनेक्शन मौजूद है या नहीं, और डेटाबेस लाइब्रेरी के बजाय इसे लोड करें। चूंकि यह डेटाबेस ऑब्जेक्ट देता है (इसके अलावा जब सभी 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;
}
}
}