我正在使用 PDO 从 MySQL 服务器获取数据。我注意到的是:如果 MySQL 服务器不可用,则需要really(相对)很长时间这段代码返回异常:
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] 超时已过期) )。
我尝试使用 PDO::setAttribute 和 PDO::ATTR_TIMEOUT 但它不起作用。我认为这是有道理的,因为问题发生在这个声明之前。
有没有办法设置连接数据库的超时时间? 2 分钟/30 秒对我来说似乎真的很长,PDO 才意识到那里什么也没有。
我想我在某个地方看到过这样的事情,但我一生都找不到它了。
$DBH = new PDO(
"mysql:host=$host;dbname=$dbname",
$username,
$password,
array(
PDO::ATTR_TIMEOUT => 5, // in seconds
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
)
);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)