我在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
此代码工作正常,但无法计算网站响应的停留时间。
所以我的问题是如何计算网站响应的响应时间?
答案 0 :(得分: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"
希望这有帮助
答案 1 :(得分:1)
如果在url = URI.parse(host)之后和响应之后添加Time.now?
答案 2 :(得分:0)
这里建议的答案没有显示服务器响应时间,它显示:
如果您只需要查看服务器处理请求所花费的时间,您需要以其他方式执行此操作。您可以使用curl
show
。特别是日期标题可以帮助您。
我建议使用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(':')
等。示例:
array([0.00000000e+00, 1.00743814e-04, 2.01487627e-04, 2.20497985e+01,
2.20498993e+01, 2.20500000e+01])
所有可用的指标和详细信息均可在response headers
找到参考