ssh2_connect()не переподключается при обрыве связи с сервером
Код работает, пока не перезагружу сервер, далее соединения заново не происходит, пишет "ssh2_connect(): Unable to connect to 192.168.0.252", хотя сервер уже доступен.
while(true)
{
if(isset($ssh) === false)
{
while(true)
{
$ssh = NULL;
$ssh = @ssh2_connect('192.168.0.252', 22);
if(is_resource($ssh) === true)
{
if(@ssh2_auth_password($ssh, 'root', 'RoaUa3iB3d') === true)
{
break; //подключился
} else
{print_r(error_get_last());
echo __FILE__.' | '.__LINE__.' | '.date('Y-m-d H:i:s').' | не подходит логин или пароль'.PHP_EOL;
}
} else
{print_r(error_get_last());
echo __FILE__.' | '.__LINE__.' | '.date('Y-m-d H:i:s').' | не могу подключиться к серверу'.PHP_EOL;
}
unset($ssh);
sleep(10);
}
}
$status = false;
$stream = @ssh2_exec($ssh, 'echo $SSH_CLIENT | awk \'{ print $1}\'');
if(is_resource($stream) === true)
{//echo 1;
if(@stream_set_blocking($stream, true) === true)
{//echo 2;
$stream_out = @ssh2_fetch_stream($stream, SSH2_STREAM_STDIO);
if(is_resource($stream_out) === true)
{//echo 3;
$newIp = @stream_get_contents($stream_out);
//var_dump($newIp);
//var_dump(filter_var($newIp, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4));
if(is_string($newIp) === true)
{//echo 4;
$newIp = trim($newIp);
//var_dump($newIp);
//var_dump(filter_var($newIp, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4));
if($newIp === filter_var($newIp, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4))
{//echo 5;
$status = true;
echo __FILE__.' | '.__LINE__.' | '.date('Y-m-d H:i:s').' | '.$newIp.PHP_EOL;
}
}
}
}
}
if($status === false) //что-то не то с ответом сервера (нет инета, отвалился сервер, вернул не то, что ожидаю и т.д.)
{
ssh2_disconnect($ssh);
unset($ssh);
sleep(10);
} else
{
sleep(1);
}
}