- 论坛徽章:
- 1
|
本帖最后由 ttcn_cu 于 2012-04-26 00:18 编辑
写了一个基于libcurl并行http get工具,测试网站的http返回
我那它测了下某知名电商网站,目的未知,后果不明
说说结果,结果随着时间的变动似乎有很大的不确定性,0点以前,一直连不上超时,0点以后,感觉一下子清爽了许多,对方似乎复位了某些网络设备。
希望网站的运维看到这个不要生气 纯属测试- #!/usr/bin/perl
- use strict;
- use 5.010;
- use warnings;
- use Data::Dumper;
- use Net::Curl::Multi qw(:constants);
- use Net::Curl::Easy qw(:constants);
- use Net::Curl::Form qw(:constants);
- my %curl_request;
- my %resps;
- my $time = shift // 1;
- my $url = shift //'www.baidu.com';
- say "run $url $time times";
- for my $i (1..$time) {
- my $curl = Net::Curl::Easy->new;
- $curl->setopt(CURLOPT_URL, $url);
- $curl->setopt(CURLOPT_WRITEDATA,\$resps{$i});
- $curl->setopt(CURLOPT_HEADER,1);
- $curl->setopt(CURLOPT_TIMEOUT,10);
- $curl_request{$i} = $curl;
- }
- my $active_handles = 0;
- my $curlm = Net::Curl::Multi->new;
- my $u_total=0;
- my $d_total=0;
- for (keys %curl_request){
- $curlm->add_handle($curl_request{$_});
- $active_handles++;
- }
- my $running = 0;
- do {
- my ($r, $w, $e) = $curlm->fdset();
- my $timeout = $curlm->timeout();
- select $r, $w, $e, $timeout / 1000
- if $timeout > 0;
- $running = $curlm->perform();
- while ( my ( $msg, $easy, $result ) = $curlm->info_read() ) {
- $curlm->remove_handle( $easy );
- }
- } while ( $running );
- my %r;
- for (values %resps){
- if(!defined $_){
- $r{TIMEOUT}++;
- }
- elsif (/(HTTP[^\x0a\x0d]*)/xsm){
- $r{$1}++;
- }
- }
复制代码 |
|