加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 如何超时ibase_connect?

发布时间:2020-12-13 16:09:32 所属栏目:PHP教程 来源:网络整理
导读:我正在尝试在连接到firebird 2.5 db时实现超时. 这适用于连接150台服务器的脚本.我的目标是太失败了服务器并移动到下一个服务器,以维持脚本执行时间. 正常的脚本执行时间是30秒,但是如果一个服务器发生故障,它会提升到300秒. 我在PHP 7上使用ibase扩展. 有什
我正在尝试在连接到firebird 2.5 db时实现超时.

这适用于连接150台服务器的脚本.我的目标是太失败了服务器并移动到下一个服务器,以维持脚本执行时间.

正常的脚本执行时间是30秒,但是如果一个服务器发生故障,它会提升到300秒.
我在PHP 7上使用ibase扩展.

有什么建议吗?

提前致谢.

解决方法

服务器端存在连接超时选项,在客户端,您可以尝试在firebird.conf中设置它
如何在连接前测试端口是否打开?

<?php

function con_test($i,$p) {
    $f = @fsockopen($i,$p,$errno,$errstr,0.1);
        if (!$f) {
            return false;
        } 
        else {
            fclose($f);
            return true;
        }
}   


$host[] = ['ip'=>'192.168.52.97','port' => '3050','alias' => 'test'];
$host[] = ['ip'=>'192.168.52.96','alias' => 'test'];

$username='sysdba';
$password = 'masterkey';

foreach ($host as $k=>$v)
 {
 if (con_test($v['ip'],$v['port'])) { 

    $host = $v['ip'].'/'.$v['port'].':'.$v['alias'];
    $dbh = ibase_connect($host,$username,$password);
    $stmt = 'SELECT 'test' as test FROM rdb$database';
    $sth = ibase_query($dbh,$stmt);

    while ($row = ibase_fetch_object($sth)) {
    echo $row->TEST,PHP_EOL;
    }
    ibase_free_result($sth);
    ibase_close($dbh);
} 
else  {
    echo 'Cannot connect to '.$v['ip'].':'.$v['port'].PHP_EOL;
}

}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读