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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сравнение многопоточности и Async, Parallel, Кто нибудь реально пробовал??? 
:(
    Опции темы
djusha
Дата 1.6.2011, 20:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(burakov @ 25.5.2011,  20:26)
Скрипт я запускаю из под WinXP, который стоит на локальной машине, подключенной к инету.

ну не знаю... я все же озаботился, поставил виртуальную машину VMware... на нее Linyx... CentOS... хотя лучше бы было FreeBSD, но с ней не получилось общюю папку(Shared Folders) с виндовс сделать

сейчас у меня все скрипты физически находятся на диске винды... 

как и положено D:/home/юзер....

эта же папка является общей в VMware и ссылка... тоесть в linux она тоже /home/юзер....


теперь могу одни и те же скрипты одинаково запускать как в linyx так и в винде на денвере...

плюс редактор виндовый... любимый UltraEdit... в общем удобно для отладки...



PM WWW   Вверх
djusha
Дата 3.6.2011, 23:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Снова столкнулся с непонятными для меня вещами...

каким образом можно заставить несколько подпрограмм на AnyEvent работать последовательно, друг за другом?

например, в цикле проверяем сначала $checkOneSite("$domain")... оставляем только нужное... далее проверяем checkSecondSite("$domain")... и так далее...

на LWP это выглядет так:

Код


#!/usr/bin/perl
use strict;
 use warnings;

open (FIN, '<', 'domain.txt') || die 'No read file! \n';

 my $countAll = '0'; my $countGood = '0';
# foreach my $domain ( @domains ) {
while (<FIN>){ # while читает построчно, и не вешает всю память при чтении больших файлов

  $countAll++; # считаем все домены
 my $domain = $_;
 chomp( $domain );

 my ($goodDomainOne, $oneParametr) = checkOneSite("$domain"); #  возвращаем успешно пройденный домен в $goodDomainOne и результат в $oneParametr, возможны еще какие то параметры кроме $oneParametr
# что нибудь делаем, проверяем
        if ($oneParametr) { # только успешно-пройденные

 my ($goodDomainSecond, $secondParametr)  = checkSecondSite("$domain"); # возвращаем успешнопройденный домен в $goodDomainSecond и результат в $secondParametr, возможны еще какие то параметры кроме $secondParametr
 # что нибудь  делаем
         if ($secondParametr) { # только успешнопройденные

  $countGood++; # считаем успешно прошедшие
 print {$fout} "$countAll;$countGood;$goodDomainOne;$oneParametr;$goodDomainSecond;$secondParametr\n";
 print             "$countAll;$countGood;$goodDomainOne;$oneParametr;$goodDomainSecond;$secondParametr\n";

            }
                      }
                                }


close (FIN);




на AnyEvent передать параметры не из подпрограммы вот таким образом ($goodDomainOne, $oneParametr) = checkOneSite("$domain");  не получается 

... return в кулбеке(правильно?) не работает...

Код

                        sub {
                my ($body, $hdr) = @_;
                return $body; # висим...
            }



помогите... как сдесь поступить? туплю...

Это сообщение отредактировал(а) djusha - 4.6.2011, 09:46
PM WWW   Вверх
djusha
Дата 4.6.2011, 12:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



еще...  вот интересная статья.... "Perl: Wrapper для работы с HTTP-запросами" http://www.s3blog.org/ua.html

тоже на AnyEvent::HTTP

могли бы Вы показать рабочий пример... как это использовать?

спасибо заранее!
PM WWW   Вверх
EcSYZ
Дата 4.6.2011, 13:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Статья выше абсолютна бесполезная, так как не нашёл там ничего нового.
Передавать параметры из калбэка return`ом конечно же нельзя, но от этого жизнь сложнее не становится

Это сообщение отредактировал(а) EcSYZ - 4.6.2011, 14:02
PM MAIL WWW   Вверх
djusha
Дата 4.6.2011, 14:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(EcSYZ @ 4.6.2011,  13:43)
Статья выше абсолютна бесполезная, так как не нашёл там ничего нового.
Передавать параметры из калбэка return`ом конечно же нельзя, но от этого жизнь сложнее не становится

ну... Вы для себя ищите, я для себя smile

и все же... пожалуйста... каким образом передавать параметры из калбэка то??
PM WWW   Вверх
EcSYZ
Дата 4.6.2011, 14:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Ну например если используется в объекте, то получив данные, можно засунуть их в тот же объект.
Или например использовать глобальные переменные для их хранения.

Вот ещё могу предложить что посмотреть, мож найдёте что интересное:
http://www.perl-dev.ws/2011/04/anyeventhttp.html
http://www.perl-dev.ws/2011/05/anyeventhttp-2.html
PM MAIL WWW   Вверх
djusha
Дата 4.6.2011, 23:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(EcSYZ @ 4.6.2011,  14:15)
Ну например если используется в объекте, то получив данные, можно засунуть их в тот же объект.
Или например использовать глобальные переменные для их хранения.

Вот ещё могу предложить что посмотреть, мож найдёте что интересное:
http://www.perl-dev.ws/2011/04/anyeventhttp.html
http://www.perl-dev.ws/2011/05/anyeventhttp-2.html

ссылки не открываются... http://www.perl-dev.ws не работает.

но содержимое прочитал... кое что интересное для себя нашел... большое спасибо!

но конкретно, по моей проблеме с калбэком так ума у меня и не добавилось...

единственное, что дошло сделать push

Код

         sub {
                my ($body, $hdr) = @_;
              push @out, "$body : $url \n";
}


далее return @out; в конце подпрограммы...

тогда получается передавать в массив...
@aaa = checkOneSite($domain);
print @aaa;

но в этом случае, все работает как то не так...

если выводить через print, то программа обрабатывает строки по очереди в терминале бегут...

если с push, то после пуска происходит задержка... они как бы накапливаются... а потом резко выплевываются в терминал...

короче... запутался совсем... пошел спать  smile  smile 
PM WWW   Вверх
shamber
Дата 5.6.2011, 01:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1422
Регистрация: 5.9.2006
Где: Россия

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



Цитата(djusha @  4.6.2011,  23:43 Найти цитируемый пост)
 они как бы накапливаются... 

буфферизация?
PM MAIL Jabber   Вверх
EcSYZ
Дата 5.6.2011, 13:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



х\з, у меня всё из любых стран этого мира открывается  smile 
Может в скрипте стоит сделать:
Код

#!/usr/bin/perl
$|=1;
use common::sense;
...


На счёт данных от запроса, то у меня это в принципе не вызывало никаких проблем.
Например, кусок из моего crawler`а:
Код

sub _run
{
    my $self = shift;
    my $cv   = shift;
    
    my $link = $self->link_get();
    return 0 unless(defined $link);
    
    $self->{workers_run}++;
    http_request(
        GET     => $link,
        headers => { "user-agent" => 'Opera/9.80 (X11; Linux x86_64; U; ru) Presto/2.8.131 Version/11.10' },
        timeout => 5,
        sub {
            if($_[1]->{Status} == 200 && defined $_[0] && $_[1]->{'content-type'}=~/^text\/html/i && $_[0]=~/\<\s*html/i){
                $self->link_push_used('links', $link);
                
                $self->link_push( $self->_parse($link, $_[0], $_[1]) );
            } else {
                $self->link_push_used('failed', $link);
            }
            
            $self->print_stat();
            
            (--$self->{workers_run}) == 0 ? $cv->send : undef;
        }
    );
}

PM MAIL WWW   Вверх
djusha
Дата 8.6.2011, 09:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(EcSYZ @ 5.6.2011,  13:48)
х\з, у меня всё из любых стран этого мира открывается  smile 
Может в скрипте стоит сделать:
Код

#!/usr/bin/perl
$|=1;
use common::sense;
...


На счёт данных от запроса, то у меня это в принципе не вызывало никаких проблем.
Например, кусок из моего crawler`а:
*************************************************

расскажите великий смысл про use common::sense... кроме дополнительной, хоть и незначилетьной нагрузки на сервер...

use strict /warnings не warnings я и так добавлю, много букав не пугает smile можно даже в одну строчку

say state switch - тоже хз... в чем прелесть? понты все сиё... тем более что на серваках perl5.8.8 стоит...

конкретно по Вашему ответу.. Вы вокруг да около... но с моими знаниями... сделал пока push @out, qq($count;$_[1]->{Status}.... а там видно будет...


зы... нужно переделать cpan'овский  модуль с LWP на anyevent.


готов растатся с некоторой наличностью smile

если есть желающие - за подробностями в личку...

PM WWW   Вверх
EcSYZ
Дата 8.6.2011, 09:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Код

use common::sense;

Да чисто для понтов юзаю, шоб выпендриться  smile

Цитата

зы... нужно переделать cpan'овский  модуль с LWP на anyevent.

Вот нафига переделывать LWP на anyevent ? Я например не вижу никаких вообще плюсов LWP перед anyevent-http.
Лино у меня уже давно зреет мысль переписать anyevent-http самому и сделать чуть более удобных.
PM MAIL WWW   Вверх
djusha
Дата 8.6.2011, 10:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(EcSYZ @ 8.6.2011,  09:47)
Код

use common::sense;

Да чисто для понтов юзаю, шоб выпендриться  smile

ну а аргументы где в пользу common::sense... оно ж полезнее с аргументами smile

Добавлено @ 10:11
Цитата(EcSYZ @ 8.6.2011,  09:47)

Цитата

зы... нужно переделать cpan'овский  модуль с LWP на anyevent.

Вот нафига переделывать LWP на anyevent ? Я например не вижу никаких вообще плюсов LWP перед anyevent-http.
Лино у меня уже давно зреет мысль переписать anyevent-http самому и сделать чуть более удобных.

перефразирую...

нужно переделать модуль со CPAN, который написан с использованием LWP... чтобы он был на anyevent...

по поводу переписать... чего воду лить то попусту... я выбираю из готового...



Это сообщение отредактировал(а) djusha - 8.6.2011, 10:13
PM WWW   Вверх
Pfailed
Дата 8.6.2011, 10:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



djusha, что за модуль?


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


Новичок



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

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



Цитата(Pfailed @ 8.6.2011,  10:30)
djusha, что за модуль?

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


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

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


 




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


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

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