1

Ruby で次のコードを記述して、Web サイトに ping を実行し、応答を確認しました。応答が true の場合、Web サイトは適切に応答していますが、false の場合は Web サイトが応答していないことを示します。

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

このコードは問題なく動作しますが、Web サイトが応答する応答時間を計算できません。

だから私の質問は、ウェブサイトが応答する応答時間をどのように計算するのですか??

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) の後、response の後に Time.now を追加するのはどうですか?

于 2012-04-19T08:08:45.467 に答える
0

ここでの回答は、サーバーの応答時間を示していないことを示唆しています。

  • リクエストを送信するために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_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(':')

利用可能なすべてのメトリックと詳細情報は、cURL マンページにあります。

参考文献

サーバーの応答時間を取得するにはどうすればよいですか?

cURL を使用して一度に要求と応答時間を測定するにはどうすればよいですか?

于 2018-04-22T17:17:31.230 に答える