Как отключить ibase_connect?

Я пытаюсь реализовать тайм-аут при подключении к Firebird 2,5 дБ.

Это для скрипта, который подключается к 150+ серверам. Моя цель — тоже выйти из строя на этом сервере и перейти к следующему, чтобы сохранить время выполнения скрипта.

Обычное время выполнения скрипта составляет 30 секунд, но если один сервер выходит из строя, он увеличивается до 300 секунд.
Я использую расширение ibase на PHP 7.

Любые советы?

Заранее спасибо.

4

Решение

Опция тайм-аута соединения на стороне сервера наверняка существует, на клиенте вы можете попробовать установить его в 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','port' => '3050', '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;
}

}

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]