programing

PHP에서 PDO로 열린 SQL 연결을 닫아야 합니까?

goodjava 2022. 11. 11. 23:33

PHP에서 PDO로 열린 SQL 연결을 닫아야 합니까?

PHP의 내장 MySQL 기능만으로 PHP에서 MySQL 연결을 열면 다음과 같은 작업을 수행합니다.

$link = mysql_connect($servername, $username, $password);
mysql_select_db($dbname);
//queries etcetera
mysql_close($link);

PDO를 사용하여 연결을 열면 다음과 같이 표시됩니다.

$link = new PDO("mysql:dbname=$dbname;host=$servername",$username,$password);
//prepare statements, perform queries

접속을 명시적으로 닫아야 합니까?mysql_connect()그리고.mysql_close()그렇지 않은 경우 PHP는 어떻게 접속을 끝냈는지 알 수 있습니까?

TIA.

사용하다$link = nullPDO에 접속을 닫을 수 있음을 알립니다.

PHP: PDO 연결 및 연결 관리

데이터베이스에 연결되면 PDO 클래스의 인스턴스가 스크립트로 반환됩니다.접속은 PDO 오브젝트의 라이프 타임 동안 액티브한 상태로 유지됩니다.연결을 종료하려면 해당 개체에 대한 나머지 참조를 모두 삭제하여 개체를 삭제해야 합니다. 이 작업을 수행하려면 개체를 유지하는 변수에 NULL을 할당해야 합니다.이를 명시적으로 실행하지 않으면 스크립트가 종료될 때 PHP가 자동으로 연결을 종료합니다.

PDO 자체로는 이러한 기능을 제공하지 않습니다.PDO를 통한 연결은 PHP의 PDO 개체 refcount를 통해 간접적으로 관리됩니다.

단, 리카운트에 관계없이 접속을 종료하고 싶은 경우가 있습니다.제어할 수 없기 때문에 테스트 목적으로 또는 이와 유사한 것이 필요합니다.

SQL 쿼리를 실행하여 PDO와의 Mysql 연결을 닫을 수 있습니다.Mysql 서버에 접속할 수 있는 모든 사용자는 다음을 수행할 수 있습니다.KILL적어도 자체 스레드:

/*
 * Close Mysql Connection (PDO)
 */

$pdo_mysql_close = function (PDO $connection) {

    $query = 'SHOW PROCESSLIST -- ' . uniqid('pdo_mysql_close ', 1);
    $list  = $connection->query($query)->fetchAll(PDO::FETCH_ASSOC);
    foreach ($list as $thread) {
        if ($thread['Info'] === $query) {
            return $connection->query('KILL ' . $thread['Id']);
        }
    }
    return false;
};

$pdo_mysql_close($conn);

관련 Mysql 문서:

Stackoverflow 관련 질문:

PHP 스크립트의 실행이 완료되면 모든 연결이 닫힙니다.또, 고객과의 접속을 명시적으로 종료할 필요는 없습니다.mysql_close().

로컬 기능 내에서 연결을 제한할 수도 있습니다.그러면 기능이 완료되는 즉시 연결이 닫힙니다.

뭐랄까...$linkPDO에 오브젝트가 할당되어 있는 경우 스크립트가 실행되자마자 PHP는 오브젝트가 되지 않도록 null로 설정합니다.따라서 다음 작업을 수행할 수 있습니다.

$link = new PDO("mysql:dbname=$dbname;host=$servername",$username,$password);

//prepare statements, perform queries

$link = null;

http://uk3.php.net/pdo

제가 수집한 바로는 php 매뉴얼에서는 닫을 수 없었습니다.또한 제가 본 스크립트의 예에서는 접속을 닫을 수 없었습니다.

언급URL : https://stackoverflow.com/questions/1046614/do-sql-connections-opened-with-pdo-in-php-have-to-be-closed