小编典典

使用PDO设置连接超时

mysql

我正在使用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,则发生异常(SQLSTATE [HY000]
[2003]无法在…上连接到MySQL服务器)仅需2分钟以上,而在PostgreSQL上则需要30秒(SQLSTATE [08006]
[7]超时已过期) )。

我尝试使用PDO :: setAttribute和PDO :: ATTR_TIMEOUT,但是它不起作用。我想这是有道理的,因为问题出在此声明之前。

有没有办法设置连接数据库的超时时间?对于PDO来说,2分钟30秒对我来说真的很长,要意识到那里什么也没有。

我想我在某处看到了此事,但​​终生找不到。


阅读 1065

收藏
2020-05-17

共1个答案

小编典典

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