如何使用cURL一次性测量请求和响应时间?
我有一个Web服务接收JSON格式的数据,处理数据,然后将结果返回给请求者。
我想用cURL
来衡量请求,响应和总时间。
我的示例请求如下所示:
curl -X POST -d @file server:port
而我目前在Linux中使用time
命令来衡量它:
time curl -X POST -d @file server:port
时间命令只测量总时间,但这不是我正在寻找的。
有没有办法使用cURL
来衡量请求和响应时间?
从这个精彩的博客文章... https://blog.josephscott.org/2011/10/14/timing-details-with-curl/
cURL支持请求细节的格式化输出(有关详细信息,请参阅cURL手册页,在-w, –write-out <format>
)。 对于我们的目的,我们将只关注所提供的时间细节。
创建一个新文件curl-format.txt,并粘贴:
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
发出请求:
curl -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/"
是我们要求的网址。 特别是如果您的网址具有“&”查询字符串参数,请使用引号
这是你回来的东西:
time_namelookup: 0.001
time_connect: 0.037
time_appconnect: 0.000
time_pretransfer: 0.037
time_redirect: 0.000
time_starttransfer: 0.092
----------
time_total: 0.164
制作Windows快捷方式(也称为BAT文件)
将此命令放在CURLTIME.BAT中(与curl.exe位于同一文件夹中)
curl -w "@%~dp0curl-format.txt" -o NUL -s %*
然后你可以简单地调用...
curltime wordpress.org
答案如下:
curl -X POST -d @file server:port -w %{time_connect}:%{time_starttransfer}:%{time_total}
所有与-w
一起使用的变量都可以在man curl
找到。
你可以添加到你的.bashrc等基于其他答案的快捷方式:
function perf {
curl -o /dev/null -s -w "%{time_connect} + %{time_starttransfer} = %{time_total}n" "$1"
}
用法:
> perf stackoverflow.com
0.521 + 0.686 = 1.290
链接地址: http://www.djcxy.com/p/48789.html
上一篇: How do I measure request and response times at once using cURL?
下一篇: Posting and retrieving a JSON object via REST call in java