проблемы с таймаутом в функции fsockopen

  • Автор темы Автор темы Rojer
  • Дата начала Дата начала

Rojer

Новичок
проблемы с таймаутом в функции fsockopen

Нужно проверить идет ли конект по такому то адресу и порту то есть хост online или offline
например включена у него служба на порты в диапазоне 27015-27020

вызываю функцию fsockopen

<?php
$start = time() + microtime();
$host = "80.233.152.10";
$timeout = "0.1";

echo 'IP: '. $host .'<br>';

for($port=27015; $port<=27020; $port++) {
$fp = @fsockopen($host, $port, $errno, $errstr, $timeout);
if(!$fp) {
echo 'port: '. $port .' [offline]<br>';
}else{
echo 'port: '. $port .' [<b>online</b>]<br>';
}
}
echo 'Время на выполнения скрипта: '. (time() + microtime() - $start);
?>

Если в сети есть компютер с IP 80.233.152.10 то скрипт выполняется всреднем 1 секунду а если от сервера вообще нету ответа то есть компютер выключин то скрипт выполняется всреднем 25 секунд несматря на то что тайм аут стаит 0.1 секунда.

Помогите решить проблему
 
все равно проблема остается тойже таймаут не работает =(

<?php
$start = time() + microtime();
$host = "80.233.152.10";
$timeout = 0.1;

echo 'IP: '. $host .'<br>';

for($port=27015; $port<=27020; $port++) {
$fp = @fsockopen($host, $port, $errno, $errstr, $timeout);
if(!$fp) {
echo 'port: '. $port .' [offline]<br>';
}else{
echo 'port: '. $port .' [<b>online</b>]<br>';
}
}
echo 'Время на выполнения скрипта: '. (time() + microtime() - $start);
?>
 
Rojer
ты уже здесь?)))
при
$timeout = 0.1;
скрипт действительно подвисает, а если поставить
$timeout = 1;
то все пучком

-~{}~ 15.09.06 13:52:

и почему 25секунд? ты же говорил что выходит в среднем 75с на порт
 
http://php.net/manual/ru/function.fsockopen.php#46120

-~{}~ 15.09.06 14:46:

http://ua2.php.net/manual/ru/function.fsockopen.php#28137
 
Сверху