如何使用cURL获得请求和响应时间?

news/2024/7/24 9:04:55 标签: curl, linux, shell, java, 分布式

a08e337a40657a48c5211bb4babe3b4b.gif

✎ 码甲说  

     hello,老伙计们,又有半个多月没见了,今天给大家分享一个干货编程小技巧,上至架构师、下至开发者、运维男、QA, 得此利器,事半功倍。

cURL在我的眼里,就是一个httpClient手办,老伙计们知道怎么获得cURL请求的具体耗时吗?  🙃

cURL支持格式化输出请求的详细信息(请参阅cURL手册页的-w、–write out<format>获取更多信息)。

如题,我们只关注如何知晓cURL请求的时间细节, 下面时间以s为单位。

1. 创建一个文本文件curl-format.txt, 粘贴下面内容

time_namelookup:  %{time_namelookup}s\n
        time_connect:  %{time_connect}s\n
     time_appconnect:  %{time_appconnect}s\n
    time_pretransfer:  %{time_pretransfer}s\n
       time_redirect:  %{time_redirect}s\n
  time_starttransfer:  %{time_starttransfer}s\n
                     ----------\n
          time_total:  %{time_total}s\n

2.发起请求

url -w "@curl-format.txt" -o /dev/null -s "http://wordpress.com/"

在windows机器上是curl -w "@curl-format.txt" -o NUL -s "http://wordpress.com/"

旁白解释

-w "@curl-format.txt" 通知cURL使用格式化的输出文件
-o /dev/null 将请求的输出重定向到/dev/null
-s 通知cURL不显示进度条
"http://wordpress.com/" 是我们请求的URL,请使用引号包围(尤其当你的URL包含&查询字符串)

文本输出

time_namelookup:  0.001s
      time_connect:  0.037s
   time_appconnect:  0.000s
  time_pretransfer:  0.037s
     time_redirect:  0.000s
time_starttransfer:  0.092s
                   ----------
        time_total:  0.164s

输出的啥意思呢🧐?我解释一下:

  • time_namelookup:DNS 域名解析的时间,就是把http://wordpress.com 转换成ip地址的过程

  • time_connect:TCP 连接建立的时间,就是三次握手的时间

  • time_appconnect:SSL/SSH等上层协议建立连接的时间,比如 connect/handshake 的时间

  • time_pretransfer:从请求开始到响应开始传输的时间

  • time_starttransfer:从请求开始到第一个字节将要传输的时间

  • time_total:这次请求花费的全部时间

制作成Linux/Mac快捷命令(alise 别名)

alias curltime="curl -w \"@$HOME/.curl-format.txt\" -o /dev/null -s "

制作成Linux/Mac 独立脚本

脚本不需要单独的包含格式化的文本。

在可执行路径中,创建名为curltime的文件,粘贴下面内容:

#!/bin/bash

curl -w @- -o /dev/null -s "$@" <<'EOF'
    time_namelookup:  %{time_namelookup}\n
       time_connect:  %{time_connect}\n
    time_appconnect:  %{time_appconnect}\n
   time_pretransfer:  %{time_pretransfer}\n
      time_redirect:  %{time_redirect}\n
 time_starttransfer:  %{time_starttransfer}\n
                    ----------\n
         time_total:  %{time_total}\n
EOF

制作成windows快捷方式(bat批处理)

把下面的命令写入curltime.bat:
curl -w "@%~dp0curl-format.txt" -o NUL -s %*

以上手段后,curltime wordpress.org就可以拿到cURL的请求耗时。


🤩 cURL还有一个小技巧:模拟连接/传输超时。

连接超时时间用--connect-timeout参数来指定,数据传输的最大允许时间用-m参数来指定。

连接超时的话,出错提示形如:curl: (28) connect() timed out!

数据传输的最大允许时间超时的话,出错提示形如:
curl: (28) Operation timed out after 2000 milliseconds with 0 bytes received

  01c50044634e5130f4031d9dfcc56d27.gif

●有关[Http持久连接]的一切,卷给你看

●HTTP1.1 Keep-Alive到底算不算长连接?

●宝藏好物gRPCurl

●SignalR 开发到生产部署闭坑指南

●SignalR在React/Go技术栈的实践

●我是状态机, 一颗永远骚动的机器引擎

●你怕是对MD5算法有误解

5cd9ade53b7c4de55f6a9426f0ebeaff.png

点个在看你最好看

5f97b46e292aea1702faf478552e43d7.png

仅代表此刻认知,文章永久更新地址,请移步原文!!


http://www.niftyadmin.cn/n/1864458.html

相关文章

Membership、MembershipUser和Roles类

Membership、MembershipUser和Roles类用户与角色管理在asp.net2.0中是通过Membership和Roles两个类来实现的。Membership&#xff1a;用户成员账号管理&#xff0c;用户名、密码、邮箱等Roles&#xff1a;负责用户和群组之间关系管理。l Membership类&#xff1a;主要是…

程序员的十层楼(6~7层)

作者&#xff1a; 周伟明 (14 篇文章) 日期&#xff1a; 二月 4, 2009 在 2:58 下午 第1&#xff5e;3层 看这里&#xff1a;http://software.intel.com/zh-cn/blogs/2009/02/04/1071/ 第4&#xff5e;5层 看这里&#xff1a;http://software.intel.com/zh-cn/blogs/2009/02/0…

童鞋,[HttpClient发送文件的技术实践]请查收

昨天有童鞋在群里面问&#xff1a;怎么使用HttpClient发送文件&#xff1f;01荒腔走板之前我写了一个《ABP小试牛刀之上传文件》&#xff0c;主要体现的是服务端&#xff0c;上传文件的动作是由前端小姐姐完成的&#xff0c; 我还真没有用HttpClient编程方式发送过文件。不过Ht…

浅谈MemoryCache的原生插值方式

.NET运行时内置了常用的缓存模块&#xff1a;MemoryCache标准的MemoryCache暴露了如下几个属性和方法&#xff1a;public int Count { get; } public void Compact(double percentage); public ICacheEntry CreateEntry(object key); public void Dispose(); public void Remov…

sql得到时间

sql得到当前系统时间得 日期部分 CONVERT(varchar(10),getDate(),120) 昨天 select convert(varchar(10),getdate() - 1,120) 明天 select convert(varchar(10),getdate() 1,120) 最近七天 select * from tb where 时间字段 > convert(varchar(10),getdate() - 7,120) 随后…

[导入]从架构设计到系统实施——基于.NET 3.0的全新企业应用系列课程(5):设计基于WPF的客户端.zip(6.98 MB)...

讲座内容&#xff1a; 本次系列课程将采用案例教学的方法&#xff0c;深度剖析微软的基于.NET 3.0的分布式应用设计方法和实施过程。在第五次课程中&#xff0c;我们将详细介绍如何设计基于.NET 3.0 WPF的全新的企业应用的具有相当好的客户体验的客户端。 课程讲师&#xff1a;…

一条nginx命令引发的对于容器的思考

去年的时候写了一篇原创《前后端分离&#xff0c;如何在前端项目中动态插入后端API基地址&#xff1f;&#xff08;in docker&#xff09;》&#xff0c; 我自认为这篇生产实践是对大前端、 容器化、CI/CD的得意之作。对于前后端分离的web项目&#xff0c;在容器启动的瞬间&…

vs 2008 不能切换到设计视图的解决办法

vs 2008 不能切换到设计视图的解决办法 家里电脑上安装了vs2008,之前没装其他版本的vs,最近在使用webform窗体的时候发现不能切换到设计视图了,一点切换vs就卡死,网上搜索了一下 除了重装vs2008 没有发现其他解决办法,发现vs2005也有这个问题,vs2005的解决办法是http://www.cnb…