我有一个通过 https 触发 php 脚本的 ruby 代码。
用例: php 脚本通常在 5 分钟内完成,所以我在 10 分钟后为 https 请求设置了超时。我需要一个计时器,它会在 https 请求开始后 7 分钟后触发代码。
我正在考虑使用我在发起 https 请求之前创建的线程。我不确定这是否是解决此问题的正确方法。也许根本不需要使用线程。我正在使用 ruby 1.8.7 (2010-08-16 patchlevel 302) [i386-mingw32]。如果我可以在成功完成 https 请求时“杀死”线程,我现在也不会。
uri = URI.parse(url)
start = Time.new
http_read_timeout=60*10
connection = Net::HTTP.new(uri.host, 443)
connection.use_ssl = true
begin
response = connection.start() do |http|
http.open_timeout = 50
http.read_timeout = http_read_timeout
http.request_get(uri.request_uri)
# here I need to place a code that is triggered
# in case of custom timeout is reached
end
rescue Timeout::Error
# "Connection failed
time_out_message ="security time out - after #{http_read_timeout} sec"
return time_out_message
end
puts "finished"