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

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 секунда.

Помогите решить проблему
 

Rojer

Новичок
все равно проблема остается тойже таймаут не работает =(

<?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);
?>
 

nighthunter

Новичок
Rojer
ты уже здесь?)))
при
$timeout = 0.1;
скрипт действительно подвисает, а если поставить
$timeout = 1;
то все пучком

-~{}~ 15.09.06 13:52:

и почему 25секунд? ты же говорил что выходит в среднем 75с на порт
 

nighthunter

Новичок
http://php.net/manual/ru/function.fsockopen.php#46120

-~{}~ 15.09.06 14:46:

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