如何使用cURL一次测量请求和响应时间?
cURL支持格式化输出请求的详细信息(请参阅cURL手册页的<code>-w、–write out<format></code>获取更多信息)。
如题,我们将只关注如何知晓cURL请求的时间细节, 下面时间以s为单位。
1. 创建一个文本文件curl-format.txt, 粘贴下面内容
2.发起请求
<code>url -w "@curl-format.txt" -o /dev/null -s "http://wordpress.com/"</code>
在windows机器上是<code>curl -w "@curl-format.txt" -o NUL -s "http://wordpress.com/"</code>
<code>-w "@curl-format.txt"</code> 通知cURL使用格式化的输出文件
<code>-o /dev/null</code> 将请求的输出重定向到/dev/null
<code>-s</code> 通知cURL不显示进度条
<code>"http://wordpress.com/"</code> 是我们请求的URL,请使用引号包围(尤其当你的URL包含&查询字符串)
输出的啥意思呢? 我解释一下:
time_namelookup:DNS 域名解析的时候,就是把http://wordpress.com 转换成ip地址的过程
time_connect:TCP 连接建立的时间,就是三次握手的时间
time_appconnect:SSL/SSH等上层协议建立连接的时间,比如 connect/handshake 的时间
time_pretransfer:从请求开始到响应开始传输的时间
time_starttransfer:从请求开始到第一个字节将要传输的时间
time_total:这次请求花费的全部时间
<code>alias curltime="curl -w \"@$HOME/.curl-format.txt\" -o /dev/null -s "</code>
脚本不需要单独的包含格式化的文本。
在可执行路径中,创建名为curltime的文件,粘贴下面内容:
把下面的命令写入curltime.bat:
<code>curl -w "@%~dp0curl-format.txt" -o NUL -s %*</code>
以上手段后,<code>curltime wordpress.org</code>就可以拿到cURL的请求耗时。
cURL还有一个小技巧,模拟连接/传输超时。
连接超时时间用<code>--connect-timeout</code>参数来指定,数据传输的最大允许时间用<code>-m</code>参数来指定。
连接超时的话,出错提示形如:
<code>curl: (28) connect() timed out!</code>
数据传输的最大允许时间超时的话,出错提示形如:
<code>curl: (28) Operation timed out after 2000 milliseconds with 0 bytes received</code>
本文来自博客园,作者:{有态度的马甲},转载请注明原文链接:https://www.cnblogs.com/JulianHuang/p/15682055.html
欢迎关注我的原创技术、职场公众号, 加好友谈天说地,一起进化
