Как тайм-аут сеанса 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!";
}
...
Другие вопросы по тегам