如何使用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