ПДО закрытия соединения



просто довольно простой вопрос относительно PDO по сравнению с MySQLi.



С MySQLi, чтобы закрыть соединение, вы можете сделать:



$this->connection->close();


однако с PDO он утверждает, что вы открываете соединение с помощью:



$this->connection = new PDO();


но чтобы закрыть соединение, вы установите его в null.



$this->connection = null;


это правильно, и это действительно освободит соединение PDO? (Я знаю, что он делает, как это установлено в null.) Я имею в виду с mysqli, вы должны вызвать функцию (close) для закрытия соединения. Является ли PDO так же просто, как = null отключить? Или есть функция для закрытия соединения?

518   3  

3 ответов:

согласно документации вы правы (http://php.net/manual/en/pdo.connections.php):

соединение остается активен в течение всего срока службы этого объекта PDO. К закройте соединение, вам нужно уничтожить объект гарантируя, что все оставшиеся ссылки на него удаляются--вы делаете это, назначая Значение NULL для переменной, которая содержит объект. Если вы этого не сделаете явно, PHP будет автоматическое закрытие соединения, когда ваш скрипт заканчивается.

обратите внимание, что если вы инициализируете объект PDO как постоянное соединение, он не будет автоматически закрывать соединение.

$conn=new PDO("mysql:host=$host;dbname=$dbname",$user,$pass);
    // If this is your connection then you have to assign null
    // to your connection variable as follows:
$conn=null;
    // By this way you can close connection in PDO.

Я создал производный класс имеет более самодокументированный инструкция вместо "$Конн=значение null;".

class CMyPDO extends PDO {
    public function __construct($dsn, $username = null, $password = null, array $options = null) {
        parent::__construct($dsn, $username, $password, $options);
    }

    static function getNewConnection() {
        $conn=null;
        try {
            $conn = new CMyPDO("mysql:host=$host;dbname=$dbname",$user,$pass);
        }
        catch (PDOException $exc) {
            echo $exc->getMessage();
        }
        return $conn;
    }

    static function closeConnection(&$conn) {
        $conn=null;
    }
}

Так что я могу назвать мой код:

$conn=CMyPDO::getNewConnection();
// my code
CMyPDO::closeConnection($conn);

Comments

    Ничего не найдено.