将PDO连接超时时间设置为小于1秒

时间:2013-04-15 13:42:04

标签: php mysql pdo

我正在使用PHP和PDO对象连接到mysql。我有3个DB服务器,我的PHP代码可以连接到。如果我尝试连接到数据库服务器#1并且连接失败,我想立即尝试连接到数据库服务器#2。我可以使用下面的代码将连接超时时间设置为1秒。

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

理想情况下,我想将超时时间设置为<50毫秒。如果可能的话,或者0ms。有没有办法做到这一点?

2 个答案:

答案 0 :(得分:6)

这是不可能的,因为底层MySQL驱动程序不允许它:

Request #60716: Ability to set PDO connection timeout in milliseconds

答案 1 :(得分:0)

我认为用毫秒设置超时是不可能的。请参阅mysql.connect_timeout的{​​{3}}:

  

mysql.connect_timeout:

     

以秒为单位连接超时。在Linux上,此超时也用于等待服务器的第一个答案。

顺便说一下,我觉得你要做的事对我来说听起来有点 hacky 。如果您有专业要求,我会使用负载均衡器。您可以按照php doucmnetation

进行操作