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 PDO close ()? (2012 년 4 월)
PHP 스크립트 실행이 완료되면 모든 연결이 닫힙니다. 또한 .NET과의 연결을 명시 적으로 닫을 필요가 없습니다 mysql_close().
로컬 기능 내로 연결을 제한 할 수도 있습니다. 이렇게하면 기능이 완료되는 즉시 연결이 닫힙니다.
그럼으로 보는 $linkPDO를위한 객체를 할당, PHP는 것으로 설정합니다 널 (null)로 즉시 스크립트가 더 이상 객체의 너무 실행하지 않기 때문에. 따라서 다음과 같이 할 수 있습니다.
$link = new PDO("mysql:dbname=$dbname;host=$servername",$username,$password);
//prepare statements, perform queries
$link = null;
내가 수집 한 것에서 나는 어쨌든 PHP 매뉴얼에서 그것을 닫을 것을 볼 수 없었고, 내가 빨리 본 스크립트의 예는 내가 볼 수있는 것에서 어쨌든 연결을 닫지 않았습니다.
'IT TIP' 카테고리의 다른 글
| 객체에 대한 이전 기대치를 지우는 방법은 무엇입니까? (0) | 2020.11.27 |
|---|---|
| JSP에서 함수 선언? (0) | 2020.11.27 |
| C #에서 출력을 위해 double 형식 지정 (0) | 2020.11.27 |
| Java에서 바이트 범위가 -128 ~ 127 인 이유는 무엇입니까? (0) | 2020.11.27 |
| .NET-WindowStyle = 숨김 대 CreateNoWindow = true? (0) | 2020.11.27 |