Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Codeigniter beralih ke database sekunder jika primer mati

Yah, saya tidak tahu apakah ini akan berhasil, tetapi Anda sebenarnya dapat mencoba ini:

1) buat 2 grup pengaturan database (di 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) Matikan deubg untuk menghindari menampilkan kesalahan db dan benar-benar mematikan skrip Anda (lakukan untuk keduanya):

$db['default']['db_debug'] = FALSE;

3) Anda dapat meneruskan TRUE ke parameter kedua saat memuat perpustakaan, sehingga benar-benar memiliki nilai balik; ia mengembalikan objek database itu sendiri:

$dbobject1 = $this->load->database('default',TRUE);
$dbobject2 = $this->load->database('second',TRUE);

Sekarang, Anda cukup memeriksa sumber daya "ID sambungan" untuk melihat apakah sambungan telah dibuat atau tidak:

if(FALSE === $dbobject1->conn_id)
{
  echo 'No connection established!';
}

Sekarang Anda dapat memutuskan untuk memuat DB lain jika yang pertama tidak dimuat. Kelemahannya adalah, Anda tidak tahu sebenarnya mengapa koneksi db tidak berfungsi...

Adapun cara mengimplementasikan ini, Anda mungkin ingin mencoba memperluas kelas database atau, lebih baik, membuat perpustakaan Anda sendiri yang sebenarnya hanya memeriksa apakah ada koneksi atau tidak, dan memuat ini alih-alih perpustakaan database. Karena ia mengembalikan objek database (terlepas ketika semua 2 koneksi gagal), Anda kemudian dapat mengerjakannya seperti yang akan Anda lakukan pada kelas database normal:

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. Cara Melihat Variabel Status dan Sistem di MySQL Workbench menggunakan GUI

  2. Fungsi MySQL MOD() – Melakukan Operasi Modulo di MySQL

  3. JDBC PreparedStatement menghasilkan kesalahan sintaks MySQL

  4. Apa yang terjadi pertama kali di mysql:gabung atau di mana

  5. Menggunakan SqlDataAdapter untuk menyisipkan baris