2011-09-13 6 views
1

나는 이것에 대한 답을 찾을 수 없습니다. 나는 당신이 $ db = NULL을 사용할 필요가있는 PDO 연결을 닫는 것을 안다; 클래스 내에서 데이터베이스 연결에 액세스하려면 종속성 삽입을 사용하고 있습니다. $ db = NULL을 사용해야합니까? 메서드 내에서 또는 쿼리를 호출하는 페이지에서 사용해야합니까?메소드 또는 호출 페이지에서 PDO 데이터베이스 연결을 닫아야합니까?

public function find_all() { 
    connect to $db; 
     //run query 
     $db = NULL; 
      return query 
} 

하거나 다음과 같이해야한다 :

과 같이

$thing = Method::find_all(); 
//display results 
$thing = NULL; 

내가 첫 번째 방법을 사용하고 있고, 오류를 확보하지 않은,하지만 난 있는지 확인하려면 나는 그것을 올바른 방법으로하고있다. 감사.

답변

1

의존성 주입 컨테이너가 데이터베이스 연결의 복사본을 보관할 가능성이 높습니다. 따라서 unset ($ db) 또는 $ db = null을 사용하여 정상적으로 닫을 수는 있지만 이것이 마지막 참조 일 경우에만 작동합니다.

또한 모든 페이지에 대해 최대 하나의 쿼리 만 있다는 것을 알지 않는 한 모든 '찾기'방법에 ​​대해 데이터베이스 연결을 열고 닫을 수 있습니다.

두 번째 방법은 여유 공간을 확보하지만 '$ thing'이 데이터베이스 연결이거나 데이터베이스에 대한 마지막 참조를 포함하지 않으면 데이터베이스 연결이 닫히지 않습니다.

2

모든 PHP 연결은 스크립트가 끝날 때 자동으로 닫힙니다. 그러나 더 이상 필요한 객체를 수동으로 "처분"하는 것은 나쁜 습관이 아닙니다.

0

그 스크립트의 끝에서 모든 연결을 닫는 것이 좋습니다. 스크립트가 연결을 많이 만든다면 영구 연결을 사용하는 것이 더 좋으며 DB를 너무 많이 연결하면 연결이 끊어지는 것을 잊지 마십시오. 열다.

+1

이것은 영구 데이터베이스 연결의 잘못된 정보입니다. PHP Manual : http://php.net/manual/en/features.persistent-connections.php를 참고하십시오. – Sonny

관련 문제