| |
|
|
| | С помощью этого кода проверяю доступность веб-сервера. Но если серверов много и половина из них не доступна, то на их проверку уходит слишком много времени. Хотелось бы сделать “быструю проверку”, т.к. сервера все в локалке, затратить на проверку каждого не больше 1-2 секунды. Это возможно?
$fp = @fsockopen($ip, $port, $errno, $errstr, 1);
if ($fp){
$out = "GET / HTTP/1.1\r\n";
$out.= "Host: ".$ip."\r\n";
$out.= "Connection: Close\r\n\r\n";
fwrite($fp, $out);
if(fread($fp, 1)){
return "green";
}
else{
return "red";
}
fclose($fp);
}
else{
return "red";
}
|
| |
| |
|
|
| |
|
|
| |
для: x00
(01.02.2008 в 15:53)
| | | header заголовок | |
| |
|
|
| |
|
|
| |
для: mihdan
(01.02.2008 в 18:03)
| | | Так я и отправляю заголовок. Проблема в том что, fread() упорно пытается получить ответ от недоступного сервера. На что и уходит большее количество времени. | |
| |
|
|
| |
|
|
| |
для: x00
(01.02.2008 в 18:18)
| | | Зачем что-то читать? Если соединение успешно - доступен, нет - не доступен. | |
| |
|
|
| |
|
|
| |
для: mihdan
(01.02.2008 в 18:23)
| | | Может не правильно объяснил. Надо не просто пропинговать ip, а узнать работает ли на нём веб-сервер. | |
| |
|
|
| |
|
|
| |
для: x00
(01.02.2008 в 18:31)
| | | Какой сервер и как вы это хотели узнать? | |
| |
|
|
| |
|
|
| |
для: mihdan
(01.02.2008 в 18:35)
| | | Например: $fp = fsockopen(“10.10.10.1”, “80”, $errno, $errstr, 1);. Далее, если подключение установлено, fwrite() отправляем заголовки $out и читаем ответ fread(). Если ответ есть, значит сервер(апач в данном случае) доступен. Как я писал ранее, проблема в том, что если сервер не доступен, то fread()ещё секунд 20 пытается получить ответ до таймаута. Если недоступных серверов в списке много, то уходит очень много времени на перебор. | |
| |
|
|
| |
|
|
| |
для: x00
(01.02.2008 в 15:53)
| | | Проблема разрешилась путём добавления stream_set_timeout($fp, 2). Странно, почему не срабатывал последний атрибут у fsockopen (string hostname, int port [, int errno [, string errstr [, float timeout]]]).
Тема закрыта. | |
| |
|
|