1

我有以下脚本(ruby 1.9.3),如果我注释掉两条 Thread 行它工作正常,如果我把它们留在我的网络服务器上,我会收到 500 内部错误。为什么这在 CGI 中不起作用,但在命令行上却可以正常工作?

#!/usr/bin/ruby
require 'rubygems'
require 'cgi'

print "Content-type: text/html\n\n"
TIMEOUT = 8

def worker(data, results)
        results[data] = rand(6)
end

if __FILE__ == $PROGRAM_NAME
        results = {}
        worker("abc", results)
        t = Thread.new{ worker("xyz", results) }
        t.join(TIMEOUT)
        print results
        print "done"
end
4

1 回答 1

0

我将从查看您的网络服务器的错误日志开始,希望了解导致 501 的原因。我在我的服务器上尝试了这个,它按预期工作。

也许网络服务器正在启动不同的红宝石或找不到宝石。

如果您在错误日志中看不到它,您可以尝试使用救援来捕获错误,即:

begin
    t = Thread.new{ worker("xyz", results) }
    t.join(TIMEOUT)
rescue => e
    puts e.inspect
end
于 2013-10-11T07:38:55.117 回答