1

ページを取得するための合計時間を出力するスクリプトを書いています。

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の合計時間は3秒です

www.chinesegooseberry.comはwww.kiwifruit.comにリダイレクトします合計時間は3秒です

しかし、実際には、www.chinesegooseberry.com(リダイレクトに1.5秒)www.kiwifruit.com(3秒)のようになるので、合計時間は4.5秒になるはずです。

何か案は?

4

1 に答える 1

1

この簡単な perl スクリプトが役立つ場合があります。

#! /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 について、応答時間 (エンドツーエンド) が秒単位で浮動小数点数として示されます。

これがうまくいくことを願っています。

于 2012-04-04T11:55:45.920 に答える