복붙노트

[SQL] PHP의 PDO 연 마 SQL 연결을 폐쇄해야

SQL

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.

해결법

  1. ==============================

    1.PDO는 연결을 닫을 수 있습니다 알려 $ 링크 = NULL을 사용합니다.

    PDO는 연결을 닫을 수 있습니다 알려 $ 링크 = NULL을 사용합니다.

    PHP : PDO 연결 및 연결 관리

  2. ==============================

    2.PDO 자체에 이러한 기능을 제공하지 않습니다. PDO를 객체가 PHP에 대한 refcount를 통해 PDO를 통해 연결 간접적으로 관리됩니다.

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

    하지만 가끔은 당신은 상관없이 refcount는의, 어쨌든 연결을 종료하고자합니다. 당신이 그것을 제어 할 수 있기 때문에 어느, 목적 또는 유사한 테스트를 위해 필요합니다.

    당신은 SQL 쿼리를 실행하여 PDO와 MySQL의 연결을 닫을 수 있습니다. MySQL의 서버에 연결할 수있는 모든 사용자는 자신의 스레드 적어도 죽일 수있다 :

    /*
     * 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의 문서 :

    관련 유래 질문 :

  3. ==============================

    3.PHP 스크립트 완료가 실행되면 모든 연결이 닫힙니다. 또한 명시 적으로 가까이 mysql_close와 연결되지 않은 ().

    PHP 스크립트 완료가 실행되면 모든 연결이 닫힙니다. 또한 명시 적으로 가까이 mysql_close와 연결되지 않은 ().

  4. ==============================

    4.당신은 또한 지역의 기능 이내로 연결을 제한 할 수 있습니다. 연결이 즉시 기능이 완료되면 닫혀 그런 식으로.

    당신은 또한 지역의 기능 이내로 연결을 제한 할 수 있습니다. 연결이 즉시 기능이 완료되면 닫혀 그런 식으로.

  5. ==============================

    5.그럼 PDO에 대한 $ 링크 개체를 할당로, PHP 설정 것이라고보고 그 널 (null)로 즉시 더 이상 객체의 그래서 스크립트 실행 등. 따라서 당신은 할 수 있습니다 :

    그럼 PDO에 대한 $ 링크 개체를 할당로, PHP 설정 것이라고보고 그 널 (null)로 즉시 더 이상 객체의 그래서 스크립트 실행 등. 따라서 당신은 할 수 있습니다 :

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

    6.http://uk3.php.net/pdo

    http://uk3.php.net/pdo

    내가 PHP 매뉴얼에 닫습니다 어쨌든 볼 수 없었다 수집, 나는 빠르게 결코 보았다 스크립트의 예는 내가 볼 수있는 것과 어쨌든에서 연결을 종료 무엇부터.

  7. from https://stackoverflow.com/questions/1046614/do-sql-connections-opened-with-pdo-in-php-have-to-be-closed by cc-by-sa and MIT license