본문 바로가기
MySql

MySQL PDO로 연결 제한 시간 설정

by 베이스 공부 2020. 12. 12.
반응형

MySQL 서버에서 데이터를 가져 오기 위해 PDO를 사용하고 있습니다. 내가 알아 차린 것은 MySQL 서버를 사용할 수없는 경우이 코드가 예외를 반환하는 데 정말 (상대적으로) 오래 걸립니다.

try {
  $handle = new PDO($db_type . ':host='.$db_host.';dbname='.$db_name,$db_user,$db_pass);
  // Tried using PDO::setAttribute and PDO::ATTR_TIMEOUT here
} catch(PDOException $e) {
  echo $e->getMessage;
}

MySQL의 경우 예외가 발생하는 데 2 ​​분 이상 걸리고 (SQLSTATE [HY000] [2003] MySQL 서버에 연결할 수 없습니다 ...) PostgreSQL에서는 30 초 (SQLSTATE [08006] [7] timeout expired) ).

PDO :: setAttribute 및 PDO :: ATTR_TIMEOUT을 사용해 보았지만 작동하지 않습니다. 이 진술 전에 문제가 발생하기 때문에 이해가 될 것 같습니다.

DB 접속을위한 타임 아웃 설정 방법이 있나요? PDO가 거기에 아무것도 없다는 것을 깨닫기에는 2 분 / 30 초가 정말 길어 보입니다.

나는 이것이 어딘가에서 행해지는 것을 본 것 같지만 내 인생을 위해 다시 찾을 수 없습니다.

 

해결 방법

 

$DBH = new PDO(
    "mysql:host=$host;dbname=$dbname", 
    $username, 
    $password,
    array(
        PDO::ATTR_TIMEOUT => 5, // in seconds
        PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
    )
);

 

참조 페이지 https://stackoverflow.com/questions/21403082

 

 

반응형

댓글