2012-09-06 4 views
2

PDO를 사용하여 관련 MySQL 데이터베이스에 연결하는 응용 프로그램이 있습니다. 요청이있을 때마다 연결 문자열을 호출합니다. 참고 준비된 문을 사용합니다. (DEV 버전) 내 연결 문자열 방법은 PHP PDO 연결 효율성

protected function ConnectionString() 
{ 

    try { 
     $dbh = new PDO("mysql:host=".__DB_HOSTNAME.";dbname=".__DB_NAME, __DB_USERNAME, __DB_PASSWORD); 

     return $dbh; 
    } 
    catch(PDOException $e) 
    { 
     echo $e->getMessage(); 
     die(); 
    } 
} 

최근에 내 응용 프로그램의 트래픽이 대량으로 증가하고 나는 내 응용 프로그램이 연결을 많이 만들어 실패한 것을 알았어 야 ... 다음과 같습니다. 따라서 캐치가 정상보다 훨씬 더 많이 트리거됩니다. 내 응용 프로그램이 데이터베이스에 연결할 때 매우 효율적이지 않기 때문에 이것이라고 가정합니다.

영구 연결을 구현하는 것이 현명한 방법입니까? 또는 연결을 요청할 정도로 코드를 재구성해야합니까? 아니면 MySQL 데이터베이스에서 허용하는 연결 수에 문제가 있습니까? 최대 값은 현재 기본값 인 151으로 설정되어 있습니다.

도움이나 조언을 주시면 감사하겠습니다.

답변

2

나는 완전한 응용 프로그램 코드를 가지고 있지 않다. 그러나 모든 단일 SQL 쿼리 u가 새로운 연결을 만드는 것처럼 보인다. DB 연결 용으로 싱글 톤 패턴을 구현할 수 있다면 그렇게 할 수 있습니다.

DB 연결을 줄이는 또 다른 방법은 DBH 캐싱을 추가하는 것입니다. 그냥 세션에 저장하고 다음 방문은 이미 살아있는 연결을 사용합니다.

+0

정확히 문제입니다. 나는 싱글 톤 패턴을 살펴볼 것이다. DBH 캐싱 아이디어는 얼마나 안전합니까? – RobDW1984

+0

세션 쿠키가 도난 당하지 않았다고 확신하지만 안전한 정도입니다. – StasGrin