【发布时间】:2014-02-19 14:28:46
【问题描述】:
我正在使用 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] Can't connect to MySQL server on...),在 PostgreSQL 上需要 30 秒(SQLSTATE[08006] [7 ] 超时)。
我尝试使用 PDO::setAttribute 和 PDO::ATTR_TIMEOUT 但它不起作用。我想这是有道理的,因为问题发生在此语句之前。
有没有办法设置连接数据库的超时时间? 2 分钟/30 秒对我来说似乎真的很长,让 PDO 意识到那里什么都没有。
我想我在某处看到了这件事,但我一辈子都找不到了。
【问题讨论】:
标签: php mysql postgresql pdo