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秒. 有什么建议吗? 提前致谢. 解决方法
服务器端存在连接超时选项,在客户端,您可以尝试在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; } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |