当前位置: 首页 > 知识库问答 >
问题:

如何使用curl同时测量请求和响应时间?

陶文林
2023-03-14

我有一个web服务,它接收JSON格式的数据,处理数据,然后将结果返回给请求者。

我想使用curl度量请求、响应和总时间。

我的示例请求如下所示:

curl -X POST -d @file server:port

目前我在Linux中使用time命令来度量这个值:

time curl -X POST -d @file server:port

但是time命令只测量总时间--这不是我想要的。

是否有任何方法可以使用curl来度量请求和响应时间?

共有2个答案

高嘉熙
2023-03-14

答案如下:

curl -X POST -d @file server:port -w %{time_connect}:%{time_starttransfer}:%{time_total}

-w一起使用的所有变量都可以在man curl中找到。

邵绪
2023-03-14

从这篇精彩的博客文章...https://blog.josephscott.org/2011/10/14/Timing-Details-with-curl/

对于请求的详细信息,cURL支持格式化输出(有关详细信息,请参见cURL手册页,位于-w,-write-out )。出于我们的目的,我们将只关注提供的时间细节。下面的时间是以秒为单位的。

>

  • 创建一个新文件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
    

    提出请求:

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

    或者在窗户上,那是...

        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
    
    alias curltime="curl -w \"@$HOME/.curl-format.txt\" -o /dev/null -s "
    

    然后你就可以直接打电话...

    curltime wordpress.org
    

    感谢评论员皮特·道尔!

    此脚本不需要单独的.txt文件来包含格式。

    在可执行文件路径的某个位置创建一个新文件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
    

    使用与别名相同的方式html" target="_blank">调用:

    curltime wordpress.org
    

    将此命令放在curltime.bat中(与curl.exe放在同一文件夹中)

    curl -w "@%~dp0curl-format.txt" -o NUL -s %*
    

    然后你就可以直接打电话...

    curltime wordpress.org
    

  •  类似资料:
    • 本文向大家介绍使用Curl命令查看请求响应时间方法,包括了使用Curl命令查看请求响应时间方法的使用技巧和注意事项,需要的朋友参考一下 curl命令查看请求响应时间 -o:把curl 返回的html、js 写到垃圾回收站[ /dev/null] -s:去掉所有状态 -w:按照后面的格式写出rt time_namelookup:DNS 解析域名www.36nu.com的时间 time_commect

    • 问题内容: 我有一个简单的代码,可为文本文件(url_list.txt)中列出的每个URL打印GET响应时间。 当顺序触发请求时,返回的时间对应于各个URL的预期响应时间。 但是,当同时执行相同的代码时,返回的响应时间通常比预期的要高。 看来我在http.Get(url)调用之前捕获的 time_start 并不是实际发送请求的时间。我猜http.Get(url)的执行排队了一段时间。 使用gor

    • 问题内容: 我正在用PHP构建一个REST Web服务客户端,此刻我正在使用curl来向该服务发出请求。 如何使用curl发出经过身份验证的请求(http基本)?我必须自己添加标题吗? 问题答案: 你要这个: Zend有一个REST客户端和zend_http_client,我敢肯定PEAR有某种包装。但是它很容易自己完成。 因此,整个请求可能如下所示:

    • 我在一个小型LINUX项目中工作,计算CURL和远程网站的请求延迟。 所以我做了一个外壳脚本来自动向远程Apache Webserver发送GET请求。在访问Apache的access.log时,我只找到来自CURL的请求仅由apache接收的时间。 是否也可以将CURL请求的日期发送到apache服务器?(时间戳) 谢谢

    • 问题内容: 我需要为我们对服务(而非Web服务)发出的Http请求设置超时。我们正在使用Apache HTTP客户端。我添加了这两行代码,以根据请求和对服务的响应设置超时时间。 1)目前,我已将超时设置为10秒,因为我几乎立即从服务中看到了响应。我应该增加还是减少时间? 2)如果响应时间超过10秒,会发生什么?它会抛出异常吗?它将是什么异常?我还需要添加其他内容来设置以下代码中的超时时间。 问题答