2010-11-04 36 views
3

什麼是創建「我的網站停用的最佳方式?」在Ruby中?我應該如何使用HTTP(s)和Ping來檢查它?「我的網站停工了嗎?」 Howto

謝謝。

+1

可以只使用現有的服務,如果開放式網絡方案適用於:http://downforeveryoneorjustme.com/stackoverflow.com – BrokenGlass 2010-11-04 22:26:40

+0

@BrokenGlass,同樣的想法) – Nakilon 2010-11-04 22:33:34

+0

@BrokenGlass:該網站似乎沒有返回可靠的結果。它回來了:「這不僅僅是你!http://google.com從這裏往下看。」而我詢問google.com的狀態 – haltTm 2011-08-18 11:47:38

回答

3

基本上只是使用一個http庫來查看你是否可以得到(實際上,HEADing會更好)他們指向的頁面。如果您收到響應,則服務器啓動,否則(不響應或超時)服務器關閉,並相應地提醒用戶。

這是沒有這樣做的最徹底的方法,但基本上:

require 'net/http' 
require 'uri' 

def isUp(url) 
    uri = URI.parse(url) 

    begin 
     Timeout::timeout(5) { 
      Net::HTTP.start(uri.host, uri.port) { |http| 
       http.head(uri.path) 
      } 
     } 
    rescue Timeout::Error 
     return false 
    end 

    return true 
end 

你也許可以得到它沒有等待超時,和/或增加超時,以避免超時,以避免錯誤積極的,但這是一個簡單的例子。

2

(作弊)

require 'uri' 
require 'open-uri' 
site = "http://stackoverflow.com/" 
open("http://downforeveryoneorjustme.com/#{URI.parse(site).host}"){|f|f.read}["It's not just you!"]