1

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

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

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

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

4

3 回答 3

5
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"

希望这可以帮助

于 2012-04-19T08:32:16.907 回答
1

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

于 2012-04-19T08:08:45.467 回答
0

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

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

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

我建议使用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_namelookup, time_connect, time_starttransfer,time_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(':')

所有可用的指标和详细信息都可以在cURL 手册页中找到

参考文献

如何获得服务器的响应时间?

如何使用 cURL 一次测量请求和响应时间?

于 2018-04-22T17:17:31.230 回答