1

私のアプリケーションは、いくつかのドメインをチェックして、それらが有効かどうかを確認します (約 100)。単一のドメインをチェックする次のコードがあります。

def self.test_url uri, limit = 10
    if limit == 0 
        return get_error_messages("001")
    end
    begin 
        url = URI.parse(uri)
        response = Net::HTTP.start(url.host, url.port).request_head('/')  
    rescue SocketError => e 
        return get_error_messages("002")
    end
    case response
        when Net::HTTPRedirection then test_url(response['location'], limit - 1)
        else return get_error_messages(response.code)
    end
end

このコードは、リダイレクトを考慮しながら応答コードをチェックします。これはうまくいきます。私が抱えている唯一の問題は、これをループに入れたときに、並行して実行したいということです。そのため、ドメイン 2 をリクエストする前にドメイン 1 の応答を待つ必要はありません。

curl_multi を使用して PHP でこれを管理し、リクエストを並行して実行しました。Railsでできる同様のことはありますか?

4

1 に答える 1

1

1つの提案は、ドメインのリストを2つ以上の配列部分に分割することです。

次に、それぞれに対して異なるスレッドを開始します

t1 = Thread.new {func1()} t2 = Thread.new {func1()} t1.join t2.join

http://www.tutorialspoint.com/ruby/ruby_multithreading.htm

これはエミュレートされた並列処理であり、b4よりも高速にならない理由がわかりません

于 2010-05-21T03:16:25.603 に答える