如何缩短MySQL连接超时-故障切换场景


How do I shorten the MySQL Connect Time Out - Failover Scenario

我在Wordpress插件中有一个故障转移场景,如果生产数据库离线,我的web服务器上的PHP脚本会尝试连接到备份数据库。

目前,回退似乎需要长达60秒的时间。这是默认的PHP吗?我该如何将时间设置为大约10秒?

这是剧本的相关部分。。。

  try
        {
            $DBblue = new 'PDO('mysql:host='.$samhost.';'.'dbname='.$DBblue, $samuser, $sampass);
            $DBgreen = new 'PDO('mysql:host='.$samhost.';'.'dbname='.$DBgreen, $samuser, $sampass);
        }
        catch ('PDOException $pde)
        {
            // Fallback Database connection
            $althost = get_option('fallback_host');
            $altuser = get_option('fallback_user');
            $altpass = get_option('fallback_password');
            $DBblue = new 'PDO('mysql:host='.$althost.';'.'dbname='.$DBblue, $altuser, $altpass);
            $DBgreen = new 'PDO('mysql:host='.$althost.';'.'dbname='.$DBgreen, $altuser, $altpass);
        }

试试这个:

$DBblue = new 'PDO('mysql:host='.$samhost.';'.'dbname='.$DBblue, $samuser, $sampass, array(
    PDO::ATTR_TIMEOUT => "10",
    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
));
 $DBgreen = new 'PDO('mysql:host='.$samhost.';'.'dbname='.$DBgreen, $samuser, $sampass, array(
    PDO::ATTR_TIMEOUT => "10",
    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
));

PDO::ATTR_TIMEOUT=>"10"->>>将超时设置为10秒。

PDO::ATTR_ERRMODE=>PDO::ERRMODE_EXCEPTION->>>抛出异常。

更多信息:http://php.net/manual/en/pdo.setattribute.php