Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

प्राथमिक डाउन होने पर कोडनिर्देशक द्वितीयक डेटाबेस पर स्विच करें

ठीक है, मुझे नहीं पता कि यह काम करेगा या नहीं, लेकिन आप वास्तव में इसे आजमा सकते हैं:

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;
          }
        }
      }



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. डेटाबेस में MD5 को स्टोर करते समय BINARY(16) और CHAR(32) के बीच अंतर

  2. डेटाबेस से कनेक्ट करते समय Laravel कनेक्शन टाइमआउट

  3. mysql में आज से 7 दिन पहले जन्मदिन का चयन कैसे करें

  4. MySQL में BLOB कॉलम में मान खोजें

  5. कनेक्शन पूल में कनेक्शन की इष्टतम संख्या