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

Làm cách nào để ping db MySQL và kết nối lại bằng PDO

Tôi đã cố gắng tìm giải pháp cho cùng một vấn đề và tôi đã tìm thấy câu trả lời tiếp theo:

class NPDO {
    private $pdo;
    private $params;

    public function __construct() {
        $this->params = func_get_args();
        $this->init();
    }

    public function __call($name, array $args) {
        return call_user_func_array(array($this->pdo, $name), $args);
    }

    // The ping() will try to reconnect once if connection lost.
    public function ping() {
        try {
            $this->pdo->query('SELECT 1');
        } catch (PDOException $e) {
            $this->init();            // Don't catch exception here, so that re-connect fail will throw exception
        }

        return true;
    }

    private function init() {
        $class = new ReflectionClass('PDO');
        $this->pdo = $class->newInstanceArgs($this->params);
    }
}

Toàn bộ truyện tại đây: https://terenceyim. wordpress.com/2009/01/09/adding-ping- Chức năng-to-pdo/


Ai đó đang nghĩ sử dụng PDO ::ATTR_CONNECTION_STATUS , nhưng anh ấy đã phát hiện ra rằng:"$db->getAttribute(PDO::ATTR_CONNECTION_STATUS) tiếp tục trả lời “Máy chủ cục bộ qua ổ cắm UNIX” ngay cả sau khi dừng mysqld ".



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Truy vấn SCHEMA THÔNG TIN của MySQL:Tại sao? Thế nào?

  2. php, mysql - Lỗi quá nhiều kết nối đến cơ sở dữ liệu

  3. Làm thế nào để sử dụng mysqldump cho một phần của bảng?

  4. Chọn theo Tháng của một trường

  5. Các truy vấn MySQL lặp lại từ Python trả về cùng một dữ liệu