我的应用程序会检查多个域以查看它们是否有效(大约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中可以做类似的事情吗?
答案 0 :(得分:1)
一个建议是将您的域列表分成两个或多个数组部分
然后为每个线程启动不同的线程
T1 = Thread.new {func1的()} T2 = Thread.new {func1的()} t1.join t2.join
http://www.tutorialspoint.com/ruby/ruby_multithreading.htm
这是模拟的并行性,我不明白为什么它不会比b4更快