【问题标题】:Calculate response time when ping a website(Ruby)计算 ping 网站时的响应时间(Ruby)
【发布时间】:2012-04-30 17:19:04
【问题描述】:

我用 ruby​​ 编写了以下代码来 ping 一个网站并检查响应。如果响应为 true,则表示网站响应良好;如果为 false,则表明网站没有响应。

require 'net/http'
require 'uri'


def ping(host)
begin
 url=URI.parse(host)
 response=Net::HTTP.get(url)
   if response==""
     return false
   else
     return true
   end
   rescue Errno::ECONNREFUSED
     return false
 end
end

此代码工作正常,但无法计算网站响应的响应时间。

所以我的问题是如何计算网站响应的响应时间??

【问题讨论】:

    标签: ruby sockets ping


    【解决方案1】:

    这里建议的答案不显示服务器响应时间,它显示:

    • 在 ruby​​ 中发送请求所花费的时间
    • 请求的网络时间
    • 服务器的响应时间
    • 响应的网络时间
    • 在 ruby​​ 中处理响应所花费的时间

    如果您只需要查看服务器处理请求所花费的时间,则需要以另一种方式进行。您可以使用HTTPresponse headers。特别是日期标题可以帮助您。

    我建议使用curl:

    response_time_total = `curl -w \"%{time_total}\" google.com -o /dev/null -s`
    

    你可以在终端试试:

    curl -w \"%{time_total}\n\" google.com -o /dev/null -s
    

    您可以获得不同的指标,例如time_namelookuptime_connecttime_starttransfertime_redirect 等。示例:

    response_times = `curl -w \"%{time_connect}:%{time_starttransfer}:%{time_total}\" google.com -o /dev/null -s`
    time_connect, time_starttransfer, time_total = response_times.split(':')
    

    所有可用的指标和详细信息都可以在the cURL manpage找到

    参考

    How do I get a server's response time?

    How do I measure request and response times at once using cURL?

    【讨论】:

      【解决方案2】:
      require 'net/http'
      require 'uri'
      
      def ping(host)
        begin
          url = URI.parse(host)
          start_time = Time.now
          response = Net::HTTP.get(url)
          end_time = Time.now - start_time
      
          if response==""
            return false
          else
            puts "response time : #{end_time}"
            return true
          end
      
        rescue Errno::ECONNREFUSED
          return false
        end
      end
      
      ping "http://www.google.com"
      

      希望对你有帮助

      【讨论】:

        【解决方案3】:

        在 url=URI.parse(host) 和响应之后添加 Time.now 怎么样?

        【讨论】:

          猜你喜欢
          • 2016-03-26
          • 1970-01-01
          • 2022-01-06
          • 1970-01-01
          • 2016-05-10
          • 1970-01-01
          • 2012-09-21
          • 2018-08-20
          • 1970-01-01
          相关资源
          最近更新 更多