2

多くの http URL をフェッチする必要があり、AnyEvent::HTTP を使用してこれを行います すべての URL について、所要時間を測定する必要があります。これを行うにはどうすればよいですか?

私のコード(取り除かれたもの)はここにあります

    #!/usr/bin/perl                                                                                                                                                          

use strict;
use AnyEvent::HTTP;
use AnyEvent::Socket;
use Data::Dumper;


my $internal_ip=v192.168.2.103;   #Use this ip to bind instead of default ip. Harcoding necessary :-( using v$ip                                                         

sub prep_cb {
    my ($socket)=@_;
    my $bind = AnyEvent::Socket::pack_sockaddr undef, $internal_ip;
    # I need to start the time here                                                                                                                                      
    bind $socket, $bind
         or die "bind: $!";
}

my $url="http://192.168.2.105/echo.php";

my $anyevent = AnyEvent->condvar;
$anyevent->begin;
http_request(
    "GET" => $url,
    on_prepare =>\&prep_cb,
    sub {
        my ($data, $hdr) = @_;
        $anyevent->end;
        # I need to measure the time taken                                                                                                                               
        print Dumper([$data,$hdr]);
    }
    );
$anyevent->recv;
4

2 に答える 2

0

http_request() を次のように置き換えるとどうなりますか。

my $timer;
http_request(
  "GET" => $url,
  on_prepare => sub {$timer = time; prep_cb},
  sub {
      my ($data, $hdr) = @_;
      $anyevent->end;
      print "Took " . (time - $timer) . " seconds.\n";               
      print Dumper([$data,$hdr]);
  }
);
于 2016-10-14T19:07:50.673 に答える