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

该代码在考虑重定向的同时检查响应代码。这工作正常。我唯一的问题是当我把它放在一个循环中时,我希望它并行运行。因此,我不必等待域 1 响应就可以请求域 2。

我已经在 PHP 中使用 curl_multi 来并行运行请求。我可以在 Rails 中做类似的事情吗?

4

1 回答 1

1

一个建议是将您的域列表划分为两个或多个数组部分

然后为每个人启动不同的线程

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 回答