programing

PDO로 연결 시간 제한 설정

lovejava 2023. 8. 22. 21:42

PDO로 연결 시간 제한 설정

PDO를 사용하여 MySQL 서버에서 데이터를 가져오고 있습니다.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] PostgreSQL에서 MySQL 서버에 연결할 수 없습니다(...). 30초(SQLSTATE[08006] [7] 시간 초과됨).

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
    )
);

PDO용 DBLIB 드라이버를 사용하고 있는데 옵션 전달을 지원하지 않습니다(경고).

이 문제를 해결하려면 다음을 편집할 수 있습니다.connection_timeout자유 설정TDS 구성 파일 위치/etc/freetds/freetds.conf(Ubuntu의 경우).

언급URL : https://stackoverflow.com/questions/21403082/setting-a-connect-timeout-with-pdo