사이트 의 각종 응답 시간 가 져 오기(dns 분석 시간,응답 시간,전송 시간)

가끔 은 네트워크 상황 을 테스트 하기 위해 모든 단계 의 시간 을 되 돌려 야 한다.예 를 들 어 DNS 분석 시간,연결 구축 에 소요 되 는 시간,연결 구축 부터 전송 준비 에 사용 되 는 시간,연결 구축 부터 전송 에 사용 되 는 시간,전체 과정 시간,다운로드 한 데이터 양,다운로드 속도,업로드 데이터 양,업로드 속도 등 이다.다음 스 크 립 트 에서 이상 의 정 보 를 가 져 옵 니 다:
CURL 의 자료 참조:http://curl.haxx.se/libcurl/c/curl_easy_getinfo.html

###################################
### author: www.ttlsa.com   ###
### QQ : 39514058     ###
### E-mail: [email protected]  ###
###################################
use strict;
use Data::Dumper;
use WWW::Curl::Easy;

if(!@ARGV){
 print "Usaging: $0 url
";
 print "For example: $0 www.ttlsa.com
";
 exit;
}

my $curl = new WWW::Curl::Easy;
open my $response_body,">/dev/null";
$curl->setopt(CURLOPT_HEADER,1);
$curl->setopt(CURLOPT_URL, $ARGV[0]);
$curl->setopt(CURLOPT_WRITEDATA,\$response_body);
$curl->perform;
my $err = $curl->errbuf;
if(!$err){
 my $st = &getTime;
 my $http_code = $curl->getinfo(CURLINFO_RESPONSE_CODE);
 my $http_dns_time = $curl->getinfo(CURLINFO_NAMELOOKUP_TIME);
 my $http_conn_time = $curl->getinfo(CURLINFO_CONNECT_TIME);
 #my $http_APP_time = $curl->getinfo(CURLINFO_APPCONNECT_TIME);
 my $http_PRE_TRAN_time = $curl->getinfo(CURLINFO_PRETRANSFER_TIME);
 my $http_START_TRAN_time = $curl->getinfo(CURLINFO_STARTTRANSFER_TIME);
 my $http_TOTAL_time = $curl->getinfo(CURLINFO_TOTAL_TIME);
 my $http_SIZE_DOWN = $curl->getinfo(CURLINFO_SIZE_DOWNLOAD);
 my $http_SPEED_DOWN = $curl->getinfo(CURLINFO_SPEED_DOWNLOAD);

 printf "local_time: %s, http_code: %d, dns_time: %.3fms, conn_time: %.3fms, pre_tran_time: %.3fms, start_tran_time: %.3fms, total_time: %.3fms, size_download: %dB, speed_download: %dB/s",($st,$http_code,$http_dns_time,$http_conn_time,$http_PRE_TRAN_time,$http_START_TRAN_time,$http_TOTAL_time,$http_SIZE_DOWN,$http_SPEED_DOWN);
 write;

 format STDOUT_TOP=
  -@||
 $%
 =========================
 +---------------------+------+-------------+--------------+--------------------------+------------------------+-------------+-----------+------------+
 | | | DNS | | | | | | |
 +---------------------+------+-------------+--------------+--------------------------+------------------------+-------------+-----------+------------+
 .

 format STDOUT=
 |@<<<<<<<<<<<<<<<<<<<<| @<<<<| @<<<<<<<<<<<| @<<<<<<<<<<<<| @<<<<<<<<<<<<<<<<<<<<<<<<| @<<<<<<<<<<<<<<<<<<<<<<| @<<<<<<<<<<<| @<<<<<<<<<| @<<<<<<<<<<|
 $st,$http_code,$http_dns_time."ms",$http_conn_time."ms",$http_PRE_TRAN_time."ms",$http_START_TRAN_time."ms",$http_TOTAL_time."ms",$http_SIZE_DOWN."B",$http_SPEED_DOWN."B/s"
 +---------------------+------+-------------+--------------+--------------------------+------------------------+--------------+----------+------------+
 .
}else{
 print "Error: $err
";
}

sub getTime()
{
 my @time=(localtime)[5,4,3,2,1,0];
 $time[0]+=1900;
 $time[1]+=1;
 return sprintf("%04u-%02u-%02u %02u:%02u:%02u",@time);
}

셸 명령 에 도 같은 명령 이 있 습 니 다.
 
# curl -o /dev/null -s -w %{http_code}:%{http_connect}:%{time_namelookup}:%{time_connect}:%{time_pretransfer}:%{time_starttransfer}:%{time_total}:%{size_download}:%{speed_download} www.ttlsa.com
설명 하지 않 겠 습 니 다.man curl 이 cURL 로 사이트 의 각종 응답 시간 C dns 분석 시간,응답 시간,전송 시간
 
curl -o /dev/null -s -w %{http_code}:%{http_connect}:%{content_type}:%{time_namelookup}:%{time_redirect}:%{time_pretransfer}:%{time_connect}:%{time_starttransfer}:%{time_total}:%{speed_download} digdeeply.org
을 참조 하 십시오.이것 은 본인 의 블 로그 사이트 가 curl 명령 을 수행 하 는 상황 입 니 다.출력 은 보통 HTML 코드 입 니 다.-o 인 자 를 통 해/dev/null 로 보 냅 니 다.-s 매개 변 수 는 모든 상태 정 보 를 제거 합 니 다.-w 매개 변 수 는 curl 이 출력 하 는 타이머 의 상태 정 보 를 보 여 줍 니 다.http 요청 의 각 시간 대-dns 분석,서버 응답 대기,내용 가 져 오기 등 아래 에서-w 매개 변 수 를 상세 하 게 설명 하고 저(DigDeeply)가 번역 합 니 다.잘못된 점 이 있 으 면 지적 해 주세요.영문 원문:http://curl.haxx.se/docs/manpage.html)다음은 사용 가능 한 변수 이름 입 니 다:-w,--write-out 이하 변 수 는 CURL 이 생각 하 는 형식 으로 출력 되 며,출력 변 수 는%{variablename}의 형식 입 니 다.출력%,double 이 필요 하 다 면%%%,동시에 줄 을 바 꿉 니 다.\r 는 리 턴 입 니 다.\t 는 TAB 입 니 다.url_effective The URL that was fetched last. This is most meaningful if you've told curl to follow location: headers. filename_effective The ultimate filename that curl writes out to. This is only meaningful if curl is told to write to a file with the --remote-name or --output option. It's most useful in combination with the --remote-header-name option. (Added in 7.25.1) http_code http 상태 코드,예 를 들 어 200 성공,301 전향,404 찾 을 수 없 음,500 서버 오류 등.(The numerical response code that was found in the last retrieved HTTP(S) or FTP(s) transfer. In 7.18.2 the alias response_code was added to show the same info.) http_connect The numerical code that was found in the last response (from a proxy) to a curl CONNECT request. (Added in 7.12.4) time_토 탈 총 시간,초 단위 로 계산.소수점 뒤의 세 자리 까지 정확 하 다.The total time, in seconds, that the full operation lasted. The time will be displayed with millisecond resolution.) time_namelookup DNS 분석 시간,요청 부터 DNS 분석 완료 까지 걸 리 는 시간.(The time, in seconds, it took from the start until the name resolving was completed.) time_connect 연결 시간,처음부터 TCP 연결 완료 까지 걸 리 는 시간,전방 DNS 분석 시간 포함,단순히 연결 시간 이 필요 하 다 면 이 timeconnect 시간 에서 앞 시간 빼 기namelookup 시간.아래 와 같은 이치 로 더 이상 군말 하지 않 겠 다.The time, in seconds, it took from the start until the TCP connect to the remote host (or proxy) was completed.) time_app connect 연결 완료 시간,예 를 들 어 SSL/SSH 등 연결 을 만 들 거나 세 번 의 악수 시간 을 완성 합 니 다.(The time, in seconds, it took from the start until the SSL/SSH/etc connect/handshake to the remote host was completed. (Added in 7.19.0)) time_pretransfer 시작 부터 전송 준비 시간 까지.(The time, in seconds, it took from the start until the file transfer was just about to begin. This includes all pre-transfer commands and negotiations that are specific to the particular protocol(s) involved.) time_redirect 재 설정 시간 은 마지막 전송 전 까지 몇 번 의 재 설정 DNS 분석,연결,사전 전송,전송 시간 을 포함 합 니 다.(The time, in seconds, it took for all redirection steps include name lookup, connect, pretransfer and transfer before the final transaction was started. time_redirect shows the complete execution time for multiple redirections. (Added in 7.12.3)) time_starttransfer 전송 시작 시간.요청 을 보 낸 후 웹 서버 가 데이터 의 첫 번 째 바이트 로 되 돌아 오 는 데 걸 리 는 시간(The time,in seconds,it took from the start until the first byte was just about to be transfered.This includes timepretransfer and also the time the server needed to calculate the result.) size_다운로드 크기The total amount of bytes that were downloaded.) size_업로드 업로드 크기 입 니 다.The total amount of bytes that were uploaded.) size_header 가 다운로드 한 header 의 크기(The totalk amount of bytes of the downloaded headers.)size요청 한 크기 입 니 다.(The total amount of bytes that were sent in the HTTP request.) speed_다운로드 속도,단위-바이트 초당.The average download speed that curl measured for the complete download. Bytes per second.) speed_업로드 속도,단위-바이트 초당.The average upload speed that curl measured for the complete upload. Bytes per second.) content_type 은 content-type 입 니 다.더 이상 말 할 필요 가 없습니다.이것 은 제 블 로그 홈 페이지 를 방문 하여 돌아 온 결과 예제 입 니 다(text/html;charset=UTF-8);(The Content-Type of the requested document, if there was any.) num_connects Number of new connects made in the recent transfer. (Added in 7.12.3) num_redirects Number of redirects that were followed in the request. (Added in 7.12.3) redirect_url When a HTTP request was made without -L to follow redirects, this variable will show the actual URL a redirect would take you to. (Added in 7.18.2) ftp_entry_path The initial path libcurl ended up in when logging on to the remote FTP server. (Added in 7.15.4) ssl_verify_result ssl 인증 결과 0 을 되 돌려 인증 에 성 공 했 음 을 표시 합 니 다.(The result of the SSL peer certificate verification that was request.0 means the verification was successful.(Added in 7.19.0)-w 인 자 를 여러 번 사용 하면 마지막 형식 으로 출력 합 니 다.If this option is used several times, the last one will be used.

좋은 웹페이지 즐겨찾기