Как тайм-аут сеанса Telnet с использованием PHP
Как отключиться от сеанса Telnet с помощью PHP? Используя этот код ниже, я прочитал вывод Telnet. Но я хочу отключиться от сеанса Telnet, если данные не могут быть получены в переменной $output в течение 3 секунд. Как я это делаю. Пожалуйста, смотрите мой код ниже:
$fp = fsockopen("localhost", 80, $errno, $errstr, 30);
if (!$fp) {
echo "$errstr ($errno)<br />\n";
} else {
$out = "GET / HTTP/1.1\r\n";
$out .= "Connection: Close\r\n\r\n";
fwrite($fp, $out);
$output=fread($fp,128);//Here we read the output value from socket
fclose($fp);
echo $output;
}
1 ответ
Вы работаете под Linux или Windows? В Linux вы можете разветвить приложение, чтобы запустить сеанс telnet параллельно, и чтобы основной поток завершил сеанс через определенное время, если не получен вывод.
В Windows вы, вероятно, могли бы сделать цикл, который делает fread()
на сокете и следите за временем, проведенным без получения каких-либо данных и закрытия сокета по истечении заданного времени.
Редактировать: я только что вспомнил, что вам не нужно отслеживать это вручную:) Возможно, вы могли бы сделать что-то вроде
// Set socket timeout to 10 seconds
socket_set_timeout($fp, 10)
...
$output=fread($fp,128);//Here we read the output value from socket
if($output == false) {
// Code to run if timeout occured
echo "We timed out!";
}
...