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에 접속을 닫을 수 있음을 알립니다.
데이터베이스에 연결되면 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;
제가 수집한 바로는 php 매뉴얼에서는 닫을 수 없었습니다.또한 제가 본 스크립트의 예에서는 접속을 닫을 수 없었습니다.
언급URL : https://stackoverflow.com/questions/1046614/do-sql-connections-opened-with-pdo-in-php-have-to-be-closed
'programing' 카테고리의 다른 글
| vuex 돌연변이에 비동기 기능이 없는 이유(어차피 작동하지 않음) (0) | 2022.11.11 |
|---|---|
| 한 줄 명령줄에서 여러 줄 문 실행 (0) | 2022.11.11 |
| vue.2.x의 vue-model (0) | 2022.11.11 |
| 플라스크 요청 URL의 다른 부분은 어떻게 얻을 수 있나요? (0) | 2022.11.11 |
| block vs focusout -- 실제 차이는? (0) | 2022.11.10 |