Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да пингувам MySQL db и да се свържа отново чрез PDO

Опитах се да намеря решение за същия проблем и намерих следващия отговор:

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

Пълната история тук:https://terenceyim. wordpress.com/2009/01/09/adding-ping-function-to-pdo/


Някой друг мислеше да използва PDO::ATTR_CONNECTION_STATUS , но той разбра, че:"$db->getAttribute(PDO::ATTR_CONNECTION_STATUS) продължава да отговаря „Localhost през UNIX сокет“ дори след спиране на 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. Как да нулирате паролата за root на MySQL

  2. Как да разположите Percona Server за MySQL за висока наличност

  3. как да разделя таблица по колона дата и час?

  4. По-добър начин за изпълнение на множество MySQL команди с помощта на шел скрипт

  5. избиране на редове с идентификатор от друга таблица