2014-03-12 9 views
6

PHP가 열려있는 것을 알고 있습니다. 스크립트 실행이 끝나면이 연결되지만 치명적인 오류가 발생하면 어떻게됩니까?PHP는 치명적인 오류가 발생했을 때 mysql (i) 연결을 닫습니까?

  • PHP는 오류와 상관없이 연결을 종료합니까?
  • 시간이 지나면 닫히나요?
  • 아니면이 경우 열리지 않습니까?

여기 또는 Google에서 찾을 수 없습니다.

정적 연결을 사용하여 다시 사용합니다. 또한 닫으려면 __destruct()이 있습니다. 실행이 끝나면 소멸자가 호출됩니다 (로그 파일에 나타납니다). 그러나 치명적인 오류가 발생하면 (그냥 무슨 일이 일어나는지 알기 위해) 소멸자가 호출되지 않습니다. 연결은 어떻게됩니까?

+0

이것은 질문에 대답하지 않지만'set_error_handler' 및/또는'register_shutdown_function'을 사용하여 MySQL 연결을 닫으려고 할 수 있습니다. 그래도 그 사람들이 치명적인 오류를 잡을 지 확신하지 못합니다. 그냥 생각. 업데이트 : 어쩌면이 도움이 될 수 있습니다 : http://stackoverflow.com/a/8527924 –

+0

감사를위한 @RocketHazmat! :) – silversmurf

+0

당신을 환영합니다 :-) –

답변

7

영구 연결을 사용하지 않는 한, mysql 연결은 스크립트 실행이 끝날 때마다 자동으로 닫힙니다.

PHP 치명적인 오류로 인해 스크립트 실행이 중단되고 mysql 연결이 해제됩니다.

3

PHP 엔진은 이러한 충돌이 발생할 경우 열려있는 연결을 모두 제거합니다. 충돌이 없을 때와 마찬가지로. 이것은 엔진이하는 정리 일입니다. 예외 : 기존 연결을 사용할 때 연결은 풀링되고 후속 스크립트에 의해 재사용됩니다.

당신이 말한 소멸자는 클래스에있는 소멸자 입니다. 아마도 약간의 래퍼 클래스입니다. PHP가 mysql 서버에 대한 연결을 닫을 때 PHP가 호출해야하는 이유는 없습니다.

관련 문제