2013-02-07 2 views

답변

3

MySQL C API에는 필요하지 않기 때문에 지속적인 연결 기능이 없습니다. 이를 통해 생성 한 모든 연결은 영구적입니다. 즉, 프로그램을 실행하고 적극적으로 닫거나 서버가 프로그램을 종료하지 않는 이상 프로그램이 계속 실행됩니다.

PHP가 지속적인 연결을 필요로하는 유일한 이유는 HTTP가 작동하는 방식의 인공물이라는 것입니다. PHP는 원래 CGI program 이었으므로 웹 서버는 모든 DB 연결을 포함하여 각 HTTP 요청에 대해을 다시 시작합니다. 이것은 매우 시간이 오래 걸리기 때문에 mod_php을 만들었습니다. 거의 모든 사람들이 PHP를 사용합니다. HTTP의 상태 비 저장 특성으로 인해 각 요청에서 PHP 스크립트가 다시 시작되어야하지만, mod_php가 Apache 인스턴스에로드되어 있기 때문에 필요한 다음 PHP 스크립트에서 사용할 수 있도록 MySQL DB 연결을 유지하는 것과 같은 작업을 수행 할 수 있습니다.

이 모든 것이 궁금한 점이 있습니다. 영구적 인 DB 연결이 필요한 이유는 무엇입니까? 필요할 때마다 C 프로그램을 다시 시작 하시겠습니까? 그렇다면, 아마도 "누락 된"C API 기능을 찾는 대신에해야 할 일이있을 것입니다. 예를 들어 C로 웹 응용 프로그램을 작성했다면 독립형 CGI PHP가 mod_php가 된 것과 마찬가지로 rework it as an Apache module을 사용할 수 있습니다.

그러나 항상 기억

"The First Rule of Program Optimization은 :하지 마십시오 (전문가 만에!) 프로그램 최적화의 두 번째 규칙은 :. 아직하지 마."

- 당신이 benchmarkedprofiled 프로그램을하기 전에 마이클 A. 잭슨

최적화는 어리 석음이다. 우리에게 당신의 디자인과 측정 값을 보여 주면, 다음 무엇을 할 수 있는지 묻습니다. 기술적 인 수정을 먼저 요구하지 마십시오. 디자인 수정이 더 많은 도움이 될 수 있습니다.

+0

깊이있는 지식에 감사드립니다. 내가 어떻게 작성해야하는지 더 좋은 아이디어가 있다고 생각한다. 당신이 말한 것과 같은 모듈처럼 각 요청 ajax 요청을 열고 닫는 무언가 대신 끊임없이 실행되는 애플리케이션이다. 이 문제에 도움이 될까요? http://stackoverflow.com/questions/14742301/simulate-session-track-ip-track-requests? 나는 아마 그뿐만 아니라 잘못 롤 접근거야 –

2

확실히 - 연결을 닫지 않음. PHP의 "지속적인 연결"은 연결을 열린 상태로 유지하고 후속 스크립트 실행을 위해 다시 사용합니다.