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

dd70141a54a84ed13af839b80d461dab.gif

✎ 码甲说  

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

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

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

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

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

time_namelookup:  %{time_namelookup}s\ntime_connect:  %{time_connect}s\ntime_appconnect:  %{time_appconnect}s\ntime_pretransfer:  %{time_pretransfer}s\ntime_redirect:  %{time_redirect}s\ntime_starttransfer:  %{time_starttransfer}s\n----------\ntime_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.001stime_connect:  0.037stime_appconnect:  0.000stime_pretransfer:  0.037stime_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/bashcurl -w @- -o /dev/null -s "$@" <<'EOF'time_namelookup:  %{time_namelookup}\ntime_connect:  %{time_connect}\ntime_appconnect:  %{time_appconnect}\ntime_pretransfer:  %{time_pretransfer}\ntime_redirect:  %{time_redirect}\ntime_starttransfer:  %{time_starttransfer}\n----------\ntime_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

  7fa3ec26821eb687b9d25278d4c73641.gif

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

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

●宝藏好物gRPCurl

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

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

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

●你怕是对MD5算法有误解

d27c7934841df2299a953b22fa15de2c.png

点个在看你最好看

e79f347c89486eb94562a5a5f9dd9c25.png

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/294080.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ASP.NET MVC CheckBoxFor为什么会生成hidden input控件

自己开发的公众号&#xff0c;可以领取淘宝内部优惠券 Html.CheckBoxFor(m > m.Bool) 使用CheckBoxFor方法得到的html代码会是下面这个样子 <input checked"checked" data-val"true" data-val-required"Bool 字段是必需的。" id"Bool…

android 远程调试工具,Android远程调试的探索与实现

文章来源&#xff1a;美团点评技术团队作为移动开发者&#xff0c;最头疼的莫过于遇到产品上线以后出现了bug&#xff0c;但是本地开发环境又无法复现的情况。常见的调查线上棘手问题方式大概如下&#xff1a;方法优点缺点联系用户安装已添加测试日志的APK方便定位问题需要用户…

.NET 6新特性试用 | 自动生成高性能日志记录代码

前言要想记录日志&#xff0c;常用的方式是访问ILogger实例提供的日志记录方法&#xff1a;private readonly ILogger<WeatherForecastController> _logger;public WeatherForecastController(ILogger<WeatherForecastController> logger) {_logger logger; }[Htt…

3150 Pibonacci数 - Wikioi

题目描述 Description   你可能听说过的Fibonacci数和圆周率Pi。   如果你让这两个概念合并&#xff0c;一个新的深奥的概念应运而生&#xff1a;Pibonacci数。   这些数可以被定义为对于x>0&#xff1a;     如果0<x<4&#xff0c;则P(x) 1 …

Oracle Enterprises Manager 12C安装

前言 随着时代的进步与发展&#xff0c;Oracle官方于2012年12月1日起正式公布不再为Oracle10g版本提供免费的技术支持服务&#xff0c;而另一款新产品12C也即将面试&#xff0c;C即cloud&#xff0c;伴随着云计算的脚步&#xff0c;他终于粉墨登场了&#xff0c;熊熊第一时间下…

一个简单的MVC模式练习

控制层Action接受从模型层DAO传来的数据&#xff0c;显现在视图层上。 package Action;import java.sql.Connection; import java.sql.SQLException; import java.sql.Statement;import DAO.StuDAO; import Model.Student; import Util.DBUtil;public class StuAction {public …

GraphQL 到底有什么魔力?

GraphQL 起源时间退回到 2012年的一个下午, 美国加利福尼亚州, facebook 的工程师们发现他们才上架没多久的移动端应用就收到了很多差评, 用户反映app响应慢&#xff0c;耗电严重等&#xff0c;经过分析后发现, 应用在第一次启动时, 会请求大量的后端api接口, 这其中包括用户自…

android root工具twrp,安卓手机没有twrp的情况,如何下刷入magisk并获得root权限.

安装adb工具从以上地址下载,然后解压到任意目录(例如C:\adb).将此目录添加到windows环境变量path中.在cmd中输入adb, fastboot等命令,如果"显示"xxx"不是内部或外部命令命令",那么说明你弄错了,去了解一下什么是环境变量吧.如果显示一堆英文,那么说明安装完…

VBA即用型代码手册之打开有密码保护的工作薄

我给VBA下的定义&#xff1a;VBA是个人小型自动化处理的有效工具。可以大大提高自己的劳动效率&#xff0c;而且可以提高数据的准确性。我这里专注VBA,将我多年的经验汇集在VBA系列九套教程中。 作为我的学员要利用我的积木编程思想&#xff0c;积木编程最重要的是积木如何搭建…

⑥又是星期五,小试牛刀(编写定制标签)

前言 今天有点迷茫。是身体累了&#xff0c;还是心累了。有种觉得想大哭而无力的感觉&#xff08;可能心还没成熟,或是昨天羽毛球打累了&#xff09;。加油&#xff0c;Jeff Li. 活在当下&#xff0c;坚持打好基础&#xff0c;坚持刷ACM&#xff0c;坚持coding。 今天下午的小故…

技术分享|前端性能 关键性能指标以及测量工具介绍

源宝导读&#xff1a;对于一款商业软件产品而言&#xff0c;其性能表现往往会直接关系到它的生死存亡&#xff0c;这种说法一点也不夸张&#xff0c;数据显示&#xff0c;40&#xff05;的人放弃了加载时间超过3秒的网站。但是一个网页的加载时间&#xff0c;响应时间的“快”“…

ELKstack-Elasticsearch各类安装部署方法

手动安装部署Elasticsearch 开篇 开篇闲话&#xff0c;如果是新人在接触ELKstack什么都不懂的情况下&#xff0c;可以先看看各位前人写的关于ELKstack的博客&#xff0c;如何对ELKstack部署安装及使用&#xff0c;但是别人的东西只能作为借鉴&#xff0c;在自己搭建使用一定要以…

美国超人气漫画科普书!85%以上中学物理考点,5岁孩子秒懂物理

▲ 点击查看今年的高考&#xff0c;不得不说&#xff0c;一度被浙江学霸刷屏&#xff01;他总分720分&#xff0c;物理等3门满分的成绩&#xff0c;最终获得“浙江高考状元”。状元能摘得桂冠&#xff0c;除了日积月累的不断努力外&#xff0c;最重要的是&#xff0c;不断调整自…

gevent 学习笔记一

import geventdef a():print a starting....gevent.sleep(1)print a endingdef b():print b starting....gevent.sleep(1)print b endinggevent.joinall([gevent.spawn(a), gevent.spawn(b) ]) 结果显示&#xff0c;用gevent并不会因为gevent.sleep而造成阻塞,但用内置的time.s…

当前联机日志损坏恢复

2019独角兽企业重金招聘Python工程师标准>>> 环境模拟 删除状态为active的联机日志&#xff0c;然后强行关闭数据库 处理过程 SQL> startup ORACLE instance started. Total System Global Area 167772160 bytes Fixed Size 1260720 bytes Variable Size 1426071…

权威杂志评选出的十个最伟大的公式,爱因斯坦的质能方程竟然只能排第六!简直神仙打架....

全世界只有3.14 % 的人关注了爆炸吧知识难决高下各有千秋当数学家得出方程式和公式&#xff0c;如同看到雕像&#xff0c;美丽的风景&#xff0c;听到优美的曲调等等一样而得到充分的快乐。——柯普宁公式&#xff0c;是数学世界中一道美丽的风景&#xff0c;一个小小的等式&am…

在Idea中测试各JVM语言的交互性

为什么80%的码农都做不了架构师&#xff1f;>>> 背景&#xff1a; 假设出现这样的场景&#xff0c;一个Java项目中&#xff0c;需要用其他语言来编写相关模块&#xff0c;但需要能被Java调用 测试工具&#xff1a;Idea12 测试语言&#xff1a;Groovy、Scala、Ko…