Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

làm thế nào để kích hoạt tính năng tự động kết nối lại cơ sở dữ liệu trong PHP?

Đôi khi khi kết nối MySQL của bạn mở quá lâu, kết nối với DB sẽ bị ngắt khi thời gian không có truy vấn vượt quá giá trị wait_timeout trong my.cnf. Bạn sẽ nhận được lỗi thời gian chờ "MySQL server has gone away".

Đây là cách tôi triển khai tự động kết nối lại trong mã của mình:

class databaseClass {
    var $conn;
    var $db;

    public function __construct() {
        $this->connect();
    }

    public function connect() {
        $this->conn = mysql_connect(DB_HOST, DB_USER, DB_PASS);
        $this->db = mysql_select_db(DB_NAME, $this->conn);
    }

    public function disconnect() {
        mysql_close($this->conn);
    }

    public function reconnect() {
        $this->disconnect();
        $this->connect();
    }

    public function queryCompanyExist($company) {
        //auto reconnect if MySQL server has gone away
        if (!mysql_ping($this->conn)) $this->reconnect();

        $query =  "SELECT name FROM company WHERE name='$company'";
        $result = mysql_query($query);
        if (!$result) print mysql_error() . "\r\n";
        return mysql_fetch_assoc($result);
    }
}

Tham khảo tại đây để biết thêm thông tin về mysql_ping



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tôi có nên sử dụng kết nối liên tục mysql không?

  2. Làm thế nào để chọn một số lượng hàng giới hạn cho mỗi khóa ngoại?

  3. Làm cách nào để đặt trường AUTO_INCREMENT bắt đầu bằng giá trị 6000 trong mysql?

  4. thứ tự mysql theo hiệu suất đếm

  5. Sự khác biệt giữa Cơ sở dữ liệu và Lược đồ sử dụng các cơ sở dữ liệu khác nhau?