工作人员应该活着直到游戏结束。
运行启动worker的命令的正确方法是什么?它必须是非阻塞的,理想情况下将输出重定向到日志文件,以防出现问题。
我正在使用Rails 3,如果重要的话。
更新 我要重新解释一下我的问题:如何从ruby中运行linux命令,不要等待命令结束?我指的是&>>的等价物。例如,在php中,&>>工作正常,我不需要使用任何特殊的PHP功能,但在ruby中它似乎被覆盖,脚本等待命令结束并获取输出。
答案 0 :(得分:3)
我强烈建议不要在每场比赛中运行一个进程。如果你想要一个非基于回合的非阻塞游戏,那么你可能想要查看事件 - 机器,或类似https://github.com/celluloid/celluloid-io
使用其中之一,您将创建将在未来时间点处理的线程。
但是 - 如果你确实想要在ruby中启动一个进程,那么你可以从How to fire and forget a subprocess?
开始。pid = Process.fork
if pid.nil? then
# In child
exec "whatever --take-very-long"
else
# In parent
Process.detach(pid)
end