2012-04-12 3 views
0

:content_cb -callback의 추가 코드가 다운로드 속도를 느리게합니까?LWP :: UserAgent`: content_cb` : 콜백에서 추가 코드가 다운로드를 느리게합니까?

추가 코드가 실행되는 데 1/1000/1_000_000 초가 걸리고 콜백이 1_000 번 호출되면 1_000/1_000_000 * 1_000 초 동안 다운로드 속도가 느려 집니까?

#!/usr/bin/env perl 
use warnings; 
use 5.012; 
use Time::HiRes qw(usleep); 
use File::Basename; 
use LWP::UserAgent; 

my $url = 'my_url'; 
my $file_name = basename $url; 
my $ua = LWP::UserAgent->new(); 

open my $fh, '>>:raw', $file_name or die $!; 
my $res = $ua->get( 
    $url, 
    ':content_cb' => sub { 
     my ($chunk, $res, $proto) = @_; 
     print $fh $chunk; 
     usleep(1000); # code substitute 
    }, 
); 
close $fh; 

답변

2

HTTP::Async 모듈을 사용하는 것이 좋습니다.

use HTTP::Async; 

my $url = 'http://...'; 
my $async = HTTP::Async->new; 

$async->add(HTTP::Request->new(GET => $url)); 

while (my $response = $async->wait_for_next_response) { 
    # Do some processing with $response 
}