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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> LWP реконнект, как его сделать? Очень нужно, помогите плиз 
:(
    Опции темы
Riddick
  Дата 24.6.2007, 19:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Есть скрипт, он коннектится к сервису скачивает данные потом обрабатывает. Использую для этого LWP. Сервис тормозной и иногда не отвечает, а как сделать реконнект незнаю, буду очень благодарен за подсказку. Я пробовал так:
Код

#Начальные данные

&Geturl;
sub Geturl{

$browser = LWP::UserAgent->new;
$response = $browser->get( $url );
$get = $response->status_line;

}

if ($get=~m/200/){$html = $response->content;} else {&Geturl;}

#Обработка данных из переменной $html

но почему то ничо не выходит. Посоветуйте как сделать, очень сильно нужно. Заранее спасибо.
PM MAIL   Вверх
nitr
Дата 24.6.2007, 19:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2543
Регистрация: 10.2.2006
Где: Россия :)

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



если улучшить именно ваш код, то что-то в этом роде:

Код

#Начальные данные

my $html = Geturl($url);

#Обработка данных из переменной $html

sub Geturl {
    my $url = shift;
    my $ua = LWP::UserAgent->new;
    my $response = $ua->get($url);
    if ($response->is_success and $response->status_line =~ /200/ ) {
        return $response->content;
    } else {
        Geturl($url);
    }
}

P.S.: писал прям в форум...


Это сообщение отредактировал(а) nitr - 24.6.2007, 19:56


--------------------
PM   Вверх
Riddick
Дата 24.6.2007, 20:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Вот спасибо вам smile  Бооольшое!
PM MAIL   Вверх
nitr
Дата 24.6.2007, 21:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2543
Регистрация: 10.2.2006
Где: Россия :)

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



да ничего там такого и нет, вот вроде даже и лучше ;)
Код

#Начальные данные

my $ua = LWP::UserAgent->new;

my $url;
my $html;
$html = Geturl($url) while not $html;

#Обработка данных из переменной $html

sub Geturl {
    my $url = shift;
    my $response = $ua->get($url);
    if ($response->is_success and $response->status_line =~ /200/ ) {
        return $response->content;
    }
}

тем что в функции нет рекурсии и объект создаётся один раз, но надо тестить. Просто вы не указали задачу, может и помогли бы более подробнее рассказать что к чему ;) т.к. похоже (по сути кода) необходимо пересмотреть алгоритм ;)

Добавлено через 4 минуты
хотя в принципе всё норм... если используются "варнинги", то чтобы не доставало (первый код):
Код

use warnings 'all';
no warnings 'recursion';

а так имхо второй...


--------------------
PM   Вверх
Riddick
Дата 24.6.2007, 22:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Эх мне бы ваши знания (самоучкам тяжело). Раз уж так пошло спрошу дальше. Мне нужно переменную html распарсить, что я и делаю построчно регэкспами, так вот при парсинге в цикле файла все нормально, ну типа while (q=<File>){#всякая лабуда}, с этим все ясно и понятно, что как только цикл дойдет до конца файла то там и закончится, а вот с переменной $html  в моем случае как ее прочитать до конца построчно и как только она закончится, чтобы цикл заканчивался. Вы извините меня конечно, если туплю сильно, просто знания еле дотягивают до среднего уровня. Я теперь на этот форум надолго, очень тяжело искать ответы именно по Перлу, а на этом форуме очень быстро нашели заработало все с первого раза.
Еще раз спасибо!!!
З.Ы. Кстати вот первый раз увидел структуру while not, во втором ответе, теперь буду знать.
PM MAIL   Вверх
nitr
Дата 24.6.2007, 22:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2543
Регистрация: 10.2.2006
Где: Россия :)

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



Код

foreach (split /\n/, $html) {
    #обрабатываем $_ ;)
}

практически аналогично ;)

Добавлено через 2 минуты и 8 секунд
Всё зависит от ситуации... может это и не надо, а сразу "выдергивать" данные...


--------------------
PM   Вверх
Riddick
Дата 25.6.2007, 05:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



В очередной раз спасибо! Не очень понял: сразу "выдергиваем" данные. Осмелюсь предположить, что Вы имели ввиду - не закачивать данные в переменную а анализировать сразу $response->content;, хотя тоже не понятно как. В обработке $html я использую регэкспы, а если быть точнеее поиск по образцу и если находится строка соответсвующая заданным критериям, то из нее (строки)выдергивается нужные текстовые данные.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl: CGI программирование"
korob2001
sharq
  • В этом разделе обсуждаются вопросы относящиеся только к CGI программированию
  • Если ваш вопрос не относится к системному или CGI программированию, задавайте его в общем разделе
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", качать здесь


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

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


 




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


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

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