これは、文字列(URL)と整数値の2つのパラメーターを受け取る単純なPerlスクリプトです。
私がやろうとしているのは、渡されたURLに対して指定された期間(秒単位)のcurlリクエストを実行することだけです。
URLが単純なhttp://admin:admin@localhost:5074/?q=james
場合は問題ありませんが、URLにある場合に問題が発生&
します。
問題はsystem()
、ループを終了した後でも、makecurlリクエストが実行され続けることです。
どうしたの?
use strict;
use warnings;
use URI::Escape;
my $url = uri_escape($ARGV[0]);
print "URL=".$url."\n";
my $duration = $ARGV[1];
print $duration;
my $start = time();
my $end = $start + $duration;
my $request = 0;
while(time() <= $end ){
system("curl --user admin:admin --digest ".uri_unescape($url));
$request++;
}
print "------------------------ END ----------------------------------\n";
print "URL = ".uri_unescape($url)." \n";
print "Total requests made = ".$request."\n";
print "Reqs/sec = ".($request/$duration)."/sec \n";
#print $start."\n";
#print $end."\n";
print "Duration = ".$duration." sec \n";
print "-------------------------------------------------------------------\n";
コマンドは次のとおりです。
perl curl.pl "http://admin:admin@localhost:5074/?q=james&format=xml" 5