Приложение работает с удаленным сервером по SSH.
Иногда бывает так, что ответ от сервера очень долгий (больше минуты), и, соответственно, приложение висит, пока не получит ответ.
Мне нужно как-то организовать таймаут ответа, чтобы, если ответа нет больше 5 секунд, возвращать скажем пустой ответ.
Пробовал использовать
set_time_limit(5);
ini_set("default_socket_timeout", 5);
stream_set_timeout($ssh, 5);
Не помогает...
function sshExec($command)
{
$ssh = ssh2_connect('host', 22);
ssh2_auth_password($ssh, 'user', 'password');
$rStream = ssh2_exec($ssh, $command);
$rErrorStream = ssh2_fetch_stream($rStream, SSH2_STREAM_STDERR);
stream_set_blocking($rErrorStream, true);
stream_set_blocking($rStream, true);
$response = stream_get_contents($rStream);
$error = stream_get_contents($rErrorStream);
fclose($rErrorStream);
fclose($rStream);
return [
'response' => $response,
'error' => $error
];
}