Автор |
Сообщение |
Sinator Карма: 0 |
Добавлено: 22:16 7 мая 2008 | |
|
Привет.
Меня мучает уже неделю такой вопрос... как через ПХП просканить сервер в офф или онлайн....
Просто была такая мысль... что бы через сайт можно было ребутать зависнувший сервер. Как ребутать я придумал... а вот как узнать всети он или нет... =\ это уже загвоздка...
Кто знает... поделитесь плиз =)
Были идеи как вот эта :
$fp = fsockopen(\"csp.ty-ta.ru\", 27015);
if (!$fp)
{
echo \"off\";
}
else
{
echo \"on\";
}
fclose ($fp);
?>
Но этот скрипт не сканит 27015 =\\\ а 80 порт сканит на УРА! ... :weep:
|
Admin Карма: 9 |
Добавлено: 08:21 8 мая 2008 | |
|
он сканит 80 потому что по умолчанию сокет открывается по tcp протоколу
замени 1 строчку на $fp = fsockopen("udp://csp.ty-ta.ru", 27015,1);
|
Sinator Карма: 0 |
Добавлено: 19:43 10 мая 2008 | |
|
<?php
$port = "27016";
$fp = fsockopen("udp://csp.ty-ta.ru", $port, $err);
if (!$fp)
{
echo $port ." off - ". $err;
}
else
{
echo $port ." on - ". $err;
}
fclose ($fp);
?>
Пишет всегда ON (
А цифра "1" в твоём ответе... недеопустима вообзе =) Так как он кидает в эту переменную Ошибку... а име переменной не задана + если и поставить "$" то переменная не может начинаться с цифр =)
|
Admin Карма: 9 |
Добавлено: 20:01 10 мая 2008 | |
|
1 имелось в виду timeout -)
какая ОСь?
|
Sinator Карма: 0 |
Добавлено: 21:57 10 мая 2008 | |
|
Винда ХП и 2003.
При использовании "1" ... вылитала Фатал еррор... просмотрев синтаксис функции я написал вышее описанное =)
|
Admin Карма: 9 |
Добавлено: 22:22 10 мая 2008 | |
|
Ты открываешь сокет к рабочей машине и в винде по умолчанию все порты открыты, поэтому возвращается ON
Попробуй прочитать что-то из сокета. Если серв умер, то и данных там не будет.
Сделай типа
function MDE($ip, $port) {
$fp = @fsockopen("udp://$ip", $port, $errno, $errstr, 1);
if (!$fp) return FALSE;
$challenge = "\xFF\xFF\xFF\xFFTSource Engine Query\x00";
fwrite($fp, $challenge);
$buffer = fread($fp, 4096);
if (!$buffer) { fclose($fp); return FALSE; }
return true;
}
Я не проверял написаонное, но должно работать.
|
Sinator Карма: 0 |
Добавлено: 18:50 11 мая 2008 | |
|
Спасибо большое =)
|
smilies Карма: 0 |
Добавлено: 18:24 20 февраля 2009 | |
|
а если поставить ещё картинки ) например on зелёный кружок , off крассный , то как будет код писатся ) =)
|
Admin Карма: 9 |
Добавлено: 18:59 20 февраля 2009 | |
|
$result = MDE($ip, $port) ? '<img src="green.gif">' : '<img src="red.gif">';
|
qwerty12q Карма: 0 |
Добавлено: 01:29 3 января 2010 | |
|
спс, надо запомнить.
|
Coherenz Карма: 0 |
Добавлено: 06:02 14 апреля 2010 | |
|
Хм, таким же методом можно и фиксировать средний пинг до сервера. Опрашиваем сервер каждые Н-секунд/минут, отправляем пакета, дожидаемся ответа, установим лимит в 1000 мс предположим, если в течение данного периода ответа не дождались, значит сервер отключён, в случае успешного ответа, сохраняем полученный результат в БД, затем по крону раз в сутки выводим средний результат.
П.С. Извините за пост, просто наткнулся, что-то мысль в голове прошла, решил записать.
|
Admin Карма: 9 |
Добавлено: 09:41 14 апреля 2010 | |
|
в общем, все верно. Если добавить еще 5 параметров, получим метод, по которому считает пинг наш робот
|
|
|