2010-11-04 4 views
3

Каков наилучший способ создания «Мой сайт?» в Рубине? Как мне это сделать, чтобы проверить это с помощью HTTP (s) и Ping?«Мой сайт отключен?» Howto

Спасибо.

+1

мог бы просто использовать существующие услуги, что если открытый веб-сценарий применяется: http://downforeveryoneorjustme.com/stackoverflow.com – BrokenGlass

+0

@BrokenGlass, та же идея) – Nakilon

+0

@BrokenGlass: Сайт, похоже, не возвращает достоверных результатов. Он вернулся: «Это не только вы! Http://google.com смотрит вниз». в то время как я просил статус google.com – haltTm

ответ

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!"] 
Смежные вопросы