我想知道是否使用fork {}来背景从rails应用程序的过程是一个好主意或不...使用内核#fork为后台进程,优点?利弊?
从我收集的fork {my_method; Process#setsid}确实在做它应该做的事情。
1)创建具有不同PID
2)另一个工艺不中断调用进程(例如,它继续W/O等待叉完成)
3)执行子直到它完成
..这很酷,但这是一个好主意吗?叉正在做什么?它是否在内存中创建了我的整个rails mongrel/passenger实例的重复实例?如果这样会非常糟糕。或者,它在某种程度上不会消耗大量的记忆。
我的最终目标是赞成分叉这些过程(主要是发送电子邮件)与我的后台守护进程/排队系统做了 - 但如果这不会节省内存那么它肯定在错误的方向迈出的一步
我会坚持排队系统。如果你使用的是一个维护良好的软件包,那么你就不必担心fork-bombing漏洞以及一个好的排队系统所需的其他许多细节。这是一个你应该小心滚动你自己的代码的例子,除非有明确的需要。 – 2009-10-14 18:59:14
排队服务器++。可能希望查看MQ(http://github.com/mdarby/mq)以进行电子邮件排队。我在生产中使用它几个月没有问题。 – 2009-10-15 03:08:31