2012-04-04 1 views
1

전체 시간을 출력하는 스크립트를 작성하고 있습니다.URL 컬 (curl) 타이밍

curl -I -L -o /dev/null -w "Connect: %{time_connect}: TTFB: %{time_starttransfer} Total time: %{time_total} \n" $1 2>/dev/null 

그러나 문제는 최종 URL의 시간을 반환한다는 것입니다.

www.apple.com

www.chinesegooseberry.com 총 시간은 3 초 www.kiwifruit.com

하지만 실제하여이다 리디렉션 3secs 시간 합계는 그것은 www.chinesegooseberry.com (리디렉션 할 때 1.5 초) www.kiwifruit.com (3 초) 과 비슷합니다. 따라서 총 시간은 4.5 초가되어야합니다.

어떤 아이디어가 있습니까?

답변

1

이 빠른 펄 스크립트가 도움이 될 수 있습니다 :

#! /usr/bin/perl 

use LWP::UserAgent; 
use Time::HiRes qw/&time/; 

sub timereq { 
    my ($url) = @_; 
    my $ua = LWP::UserAgent->new; 
    $ua->requests_redirectable ([qw/GET POST/]); 
    my $start = time; 
    my $ret = $ua->get($url); 
    if ($ret->is_success()) { 
     return time-$start; 
    } 
    print STDERR "req to $url failed\n" unless $ret->is_success(); 
    return undef; 
} 

$| = 1; 

foreach my $url(@ARGV) { 
    printf("%6.3f %s\n",timereq($url),$url); 
} 

명령 행에 전달 된 각 URL에 대한, 그것은 부동 소수점 숫자로, 초 응답 시간 (엔드 - 투 - 엔드) 줄 것이다.

희망이 당신을 위해 작동합니다.

+0

감사합니다. bash 또는 perl을 제공합니다. – sauj