2011-03-09 2 views
0

우리는 데이터베이스 액세스를 위해 MVC와 Pear의 Zend 프레임 워크를 사용합니다. 요청이 완료 될 때마다 데이터베이스에 대한 연결을 닫아야합니까? 그렇다면 우아하게 이것을 할 수있는 방법이 있습니까?젠드 "소멸자"?

우리는 약 50 개의 액션이 여러 컨트롤러에 걸쳐 있고 각 컨트롤러 끝에 db-> disconnect()를 넣고 싶지 않습니다. 이 단절 명령을 한 위치에 넣을 수있는 방법이 있습니까? "소멸자"가 필요하다면, 요청이 완료 될 때마다 자동으로 Zend를 호출 할 수 있습니까?

답변

2

내가 생각할 수있는 두 가지 가능성을 생각해 볼 수 있습니다.

먼저 "소멸자"를 컨트롤러에 넣을 수 있습니다. plugin 예 : dispatchLoopShutdown 후크.

둘째, 요청한 내용을 실제로 끝내고 싶다면 index.php에 $application->bootstrap()->run(); 뒤에 "소멸자"를 넣을 수 있습니다.

+0

이 내용은 내가 권장하는대로 사용하십시오. 애플리케이션의 평균 사용자 시간 (요청 수)과 사이트의 사용자 수를 기준으로 선택하십시오. 서비스 또는 컨트롤러의 숫자와 사용법 및 비 지속 연결 사용에 따라 베팅하십시오. – Gary

0

방탄 솔루션은 register_shutdown_function() 만 사용합니다. 요청이 리디렉션되거나 ($this->_helper->redirector->gotoUrlAndExit()) 스크립트가 종료 된 경우에도 호출됩니다 (die() 또는 exit() 사용). 리다이렉트되거나 죽은 스크립트에서 플러그인과 인덱스의 마지막 줄 모두 실패 할 수 있습니다.