Xpoint
   [напомнить пароль]

Течёт память

Метки: [без меток]
2007-06-22 23:35:10 [обр] System[досье]

Использую LWP::Parallel
Задача - паралельная закачка веб страниц(что-то типа паука). Но стандартный метод не подходит, т.к. приходиться ожидать пока докачаеться последняя страница, а надо чтобы постоянно качалось N страниц параллельно.

Вот набросок кода(параллельно закачиваеться 10 страниц http://localhost/ покругу):

package myUA;

use Exporter();
use LWP::Parallel::UserAgent qw(:CALLBACK);
@ISA = qw(LWP::Parallel::UserAgent Exporter);
@EXPORT = @LWP::Parallel::UserAgent::EXPORT_OK;


sub on_connect 
{
    my ($self, $request, $response, $entry) = @_;
    print "Connecting to ",$request->url,"\n";
};


sub on_return 
{
    my ($self, $request, $response, $entry) = @_;
    if($response->is_success)
    {
        $self->register($request);
    } 
    else 
    {
       print "\n\nBummer! Request to ",$request->url," returned code ", $response->code, ": ", $response->message, "\n";
    };
    return;
};

package main;
use HTTP::Request; 

my $url = "http://localhost/"; 

my @reqs; 
push(@reqs,HTTP::Request->new('GET', $url)) for(1..10);

my $pua = myUA->new();

foreach my $req (@reqs) 
{
    $pua->register($req);
};
my $entries = $pua->wait();

Вроде бы всё хорошо, только с сильной скоростью утекает память, почему - не понятно. Просветите пожалуйста.
Аналогичную задачу изначально писал на POE, там тоже течёт, код - http://rt.cpan.org/Ticket/Attachment/307728/139904/
ЗЫ. форк не предлогать, задача изначально заключается в асинхронной закачке.

спустя 21 день [обр] Arty(3/6)[досье]
Не совсем ясно как и куда "параллельно закачиваеться 10 страниц" и почему "покругу"? Память утекает потому, что $self->register($request); зацикливает весь процесс. Может быть я чего недопонял, но мне кажется, что поставленная задача вполне успешно выполняется, если вместо упомянутого выражения попробовать написать следующее:
print "Request to ",$request->url," returned code ", $response->code,": ", $response->message, "\n";
print $response->content;
Powered by POEM™ Engine Copyright © 2002-2005