Модераторы: ginnie, korob2001
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> опять Net::Ping, почему получаются разные результаты 
:(
    Опции темы
study
Дата 3.3.2005, 17:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 126
Регистрация: 20.9.2004

Репутация: нет
Всего: нет



Народ, сделал пинговалку на основе модуля Net::Ping, почему когда пингуеться одновременно несколько хостов время задержки увеличивается smile
У меня запускается сразу несколько скриптов, и хосты пингуются одновременно, может из-за того что хосты пингуются одновременно время задержки увеличивается, кто-нибудь с этим сталкивался???

Заранее спасибо.
PM MAIL   Вверх
Kiber_rat
Дата 11.3.2005, 16:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


MACMANIAC
**


Профиль
Группа: Участник
Сообщений: 276
Регистрация: 18.4.2002
Где: Ashdod, Israel

Репутация: нет
Всего: 9



Приведи пример кода... Может тебе стоит форкать пинг каждого сервера?


--------------------
Best regards!                                                             
@..@_____Ku6ep
=*=______\______KPbIC
Код
print join "",map{chr}(split/(\w{2})/,hex(int(2175.57302796298**2)))
PM WWW ICQ Skype Jabber YIM   Вверх
StealtH
Дата 19.3.2005, 01:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 124
Регистрация: 16.9.2004

Репутация: нет
Всего: нет



Я уже сталкивался с такой траблой, все дело в том, что задержка появляется из-за того, что модуль Net::Ping скрипт сначала загружает, а потом юзает его функции и если скрипт большой, значит и другие модули есть. Это вроде сотые доли секунды, но при большом количестве пингуемых хостов получается большая разница. Проблему эту я решал с помощью следующего куска кода

Код

#!/usr/local/bin/perl
$command="ping ";

for($i=0;$i<=$#spisok_ip; $i++)
{
  unless ($pid = fork) {
        unless (fork) {
            exec "$command $spisok_ip[$i] >./kuda_vivodit/$i.txt";
            exit 0;
        }
        exit 0;
    }
  print "Process return PID:$pid\n";
}
    waitpid($pid,0);


Суть такова, что ты рождаешь процессы пинга, но уже правда используется сиситемная команда, а не модуль, соответственно она выдает наиболее точные результаты в выде файла, которые легко можно проанализировать написав небольшой парсер, записать куда тебе нужно, а потом удалить(переместить, короче сделать что захочется). Мне это сильно помогло, попоробуй.
PM MAIL   Вверх
Ivan Kolesnikov
Дата 26.3.2005, 09:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 113
Регистрация: 9.3.2005
Где: г. Новокузнецк

Репутация: 2
Всего: 6



Я то же с этим недавно сталкнулся (нужно было ping и tnsping сразу для нескольких хостов) реализовал через fork, дочернии процессы запускали командру (`ping localhost > /dev/null` а возвращаемое значение я складывал в pipe, после завершение команды процесс туда же складывает и слово 'exit'. Основной процесс занимается тем, что читает сообщения из очереди, обрабатывает их и если получил слово exit, уменьшает кол-во запущенных процессов на 1, когда их станет 0, он завершается.
Мне просто не очень хотелось создавать отдельные файлы, а вдруг у меня еще и прав на это не будет, а так все просто, на мой взгляд.
--------------------
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl: Системное программирование"
korob2001
sharq
  • В этом разделе обсуждаются вопросы относящиеся только к системному программированию на Perl
  • Если ваш вопрос не относится к системному или CGI программированию, задавайте его в общем разделе
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Системное программирование | Следующая тема »


 




[ Время генерации скрипта: 0.0707 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.