2009-08-29 3 views
10

쿼리 후 또는 스크립트의 끝에서 연결을 닫아야하는 이유가 있습니까?왜 mysqli_close()를 사용합니까?

할 /하지 않는 것의 이점은 무엇입니까?

+0

PHP 스크립트에 관해 이야기하는 경우 해당 태그를 질문에 추가 하시겠습니까? –

+0

Dupe : http://stackoverflow.com/questions/880885/close-mysql-connection-important 및 관련 : http://stackoverflow.com/questions/336078/php-mysql-when-is-the-best-time 데이터베이스 연결 해제 – karim79

답변

20

연결 (지속성이 아닐 경우)은 스크립트가 끝날 때마다 항상 닫히므로 이론적으로 직접 닫지 않아도됩니다.

PHP 스크립트를 실행하는 데 많은 시간이 필요하다면 더 이상 데이터베이스에 대한 요청을 할 필요가 없을 때 연결을 닫는 것이 좋습니다. 적어도 긴 계산이 완료되면 연결을 닫는 것이 좋습니다. 쿼리 후.

응용 프로그램이 공유 호스팅에 배포 된 경우 특히 그렇습니다. 사용자 계정은 일반적으로 동시에 몇 개의 연결 만 열 수 있습니다. (공유 연결에서 동시 연결 수는 매우 적을 수 있으며 일반적으로 사설 서버에서 더 크다).


이유는 우리가 종종 가까운 연결 ourselfves을은 다음과 같습니다

우리가 일반적으로 정말 우리가 우리의 모든 쿼리를 할 때 모르는
    • -이 만들어진 페이지와 특히 사실이다 작은 "블록"이 많이 있습니다. 그것들 각각은 다른 것들과 독립적이며, 독자적으로 질의를 할 수 있습니다. 언제 연결을 끊을 수 있습니까?
    • 웹 페이지는 일반적으로 생성 속도가 매우 빠르기 때문에 DB 연결을 닫지 않아도됩니다.
  • +19

    연결을 끊지 않을 때마다 DBA가 새끼 고양이를 죽입니다. – Eric

    +0

    연결을 끊지 않을 때마다 PHP가 나를 위해 일합니다 .-p PHP가 새끼 고양이를 저장합니다! ;; 사실, 블록으로 만들어진 페이지로 말한 것은 사실입니다. 예를 들어, 어떤 CMS에 대해서 생각해보십시오. 연결을 닫아야한다는 것을 언제 알 수 있습니까? PHP 코드의 실행이 끝나면 (일부 "블록"은 여전히 ​​일부 SQL 쿼리를 수행해야 할 수도 있습니다) ;; 그래서 손으로 연결을 닫는 것은 꽤 쓸모가 없습니다 ... ;;; 물론, 시간이 걸리고 PDF 쿼리와 같은 DB 쿼리를 수행하지 않는 무언가를 생성하는 경우는 예외입니다. –

    5

    장기 실행 처리를 수행하려고하지만 데이터베이스 쿼리가 끝나면 연결을 열어 두지 않는 것이 이점입니다. 사용자 세션 열기 (다른 요청을 차단)를 유지하는 경우에도 마찬가지입니다.

    예를 들어 큰 PDF 보고서를 만드는 중일 수 있습니다. 이렇게하면 파일을 만들고 쓰는 데 20-30 초가 걸릴 수 있지만 필요한 모든 데이터는 초 단위로 가져옵니다.

    일반적으로 자동으로 연결을 설정할 수도 있습니다 (연결이 지속되지 않는다고 가정).

    +1

    지속적인 연결이란 무엇입니까? mysqli (MYSQL_HOSTNAME, USERNAME, PASSWORD, DATABASE);는 지속적인가? – Tahtakafa

    +0

    mysql 확장과는 달리, mysqli는 지속적인 연결을 여는 별도의 기능을 제공하지 않는다. 지속적 연결을 열려면 연결할 때 호스트 이름 앞에 p :를 추가해야합니다. – Tarik

    관련 문제