Перейти к содержимому


определение доступности IP-адресов


Сообщений в теме: 6

#1 Nevermind

Nevermind

    Активный участник

  • Пользователи
  • PipPipPip
  • 52 сообщений
  • Пол:Мужчина
  • Город:Пермь
  • Форум:IPB 2.1.x
  • Версия MKP:C1.2 RC1

Отправлено 16 December 2007 - 09:29

имеется скрипт для проверки наличия в онлайне опред. IP

Цитата

<?php
$url=array('http://ip1,http://ip.../ip3,http://ip4');
$name=array('pc1','pc2','pc3','pc4');
for ($i=0; $i<4; $i++)
{
@ $fp=fopen($url[$i],'r');
if ($fp)
{
echo '<img src="on.gif"> <font color=#3dfe0a><b>';
echo $name[$i];
echo '</b></font><br>';
}
}
?>
Что требуется от данного скрипта: вывод информации о том, находятся ли данные компьютеры в онлайне или нет.

При использовании данного скрипта опрос IP адресов идёт очень долго...
Есть ли альтернативные варианты...
Спасибо за помошь....

#2 DNP

DNP

    Активный участник

  • Администраторы
  • PipPipPip
  • 2561 сообщений
  • Пол:Мужчина
  • Город:RUS
  • Форум:IPB 3.2, IPB 3.1
  • Версия MKP:R1.0.2, R1.0.1

Отправлено 16 December 2007 - 12:16

Да на врятли есть альтернатива время запроса зависит от скорости работы вашей машины и машины опроса.

#3 Nevermind

Nevermind

    Активный участник

  • Пользователи
  • PipPipPip
  • 52 сообщений
  • Пол:Мужчина
  • Город:Пермь
  • Форум:IPB 2.1.x
  • Версия MKP:C1.2 RC1

Отправлено 16 December 2007 - 22:55

Натолкнуло на мысль что есть альтернативы, видя например мониторинг серверов либо карты локальных сетей где показано у кого включен комп у кого выключен, там достаточно быстро быстро все происходит.
Пока идей у меня нет, вот подумал делать flush() сразу после каждого полезного вывода (быстрее работать не будет, но пользователь будет видеть постепенный приход результатов и ему будет казаться, что работает быстрее. Если у кого есть идеи пишите  :)

#4 Dial

Dial

    Участник

  • Пользователи
  • PipPip
  • 11 сообщений
  • Форум:SMF
  • Версия MKP:M1.1.2a

Отправлено 10 January 2008 - 04:37

Эммм... Сделать базу в мускуле, туда ИПы. Далее скрипт пингует ИПы из базы и все. Которые доступны - выводит, которые не доступны - не выводит. :) Как будет время могу накидать такой скриптик, если сам еще не разберешся... :)

#5 BooDi

BooDi

    Участник

  • Пользователи
  • PipPip
  • 25 сообщений
  • Форум:IBP 2.2.x
  • Версия MKP:M 1.1 RC1

Отправлено 22 January 2008 - 12:03

если пинговать надо сервера какиенить, то быстрее
if (fsockopen($ip, $port, $errno, $errstr, 1)) echo "Online";  else echo "Offline";

#6 BooDi

BooDi

    Участник

  • Пользователи
  • PipPip
  • 25 сообщений
  • Форум:IBP 2.2.x
  • Версия MKP:M 1.1 RC1

Отправлено 22 January 2008 - 12:12

если просто тачки, то

exec ( 'ping -c 1 -t 1 ' . $ip , $ret ) ;
if ( $ret[5] ) echo 'Online'; else echo 'Offline';

это для nix(у меня сервак на freebsd - работает влет)

для виндов параметры другие

Сообщение отредактировал BooDi: 22 January 2008 - 12:12


#7 Nevermind

Nevermind

    Активный участник

  • Пользователи
  • PipPipPip
  • 52 сообщений
  • Пол:Мужчина
  • Город:Пермь
  • Форум:IPB 2.1.x
  • Версия MKP:C1.2 RC1

Отправлено 22 January 2008 - 16:38

Спасибо конечго всем, но уже не актуально  :)
Нашел такое решение
в php:
exec("путь_к_директории_со_скриптами/имя_скрипта.bat "."адрес")
в .bat:
(ping -n 1 -w 10 $1)&&(echo "online")||(echo "offline")

выводит прямо в html состояние пользователя, в зависимости от прохождения к нему пинга. -n - количество пакетов, -w - таймаут ожидания.
внимания апач должен быть собран с suexec и открыт доступ на исполнение папки со скриптами.
в параметрах exec обязательно пробел после имя_скрипта.bat



Ответить



  


Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных