sql >> データベース >  >> RDS >> Mysql

MySQLデータベースにpingを実行し、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) mysqldを停止した後も、「UNIXソケット経由のローカルホスト」と応答し続けます。



    1. MySQLエラー1241:オペランドには1つの列が含まれている必要があります

    2. SQLServer2012のパフォーマンス関連の修正

    3. PostgreSQLで列のデータ型を確認する3つの方法

    4. mysqlの複数のフィールドに対して加重検索を行うための最良の方法は?