我们正在做一些新应用的原型设计,并注意到其中一项操作需要永久加载(80-120秒)。由于很多处理不需要在页面加载时发生(我们可以稍后通过Ajax请求数据),所以我想使用Process.fork
来允许页面立即返回,而处理仍然在“幕后”进行。Rails控制器中的Process.fork
我们使用Apache与Passenger为应用程序。
几件事情:
我知道delayed_jobs,resque,BJ等后台作业的宝石。我们使用dj,并且最终会使用类似的东西来实现这一点。这是我们原型设计时的权宜之计。
我不关心服务器的性能。该应用程序运行在自己的服务器上,只有少数用户试用它。
早期测试表明这很好,但我想知道这是否是一个好主意。它会变得可靠吗?如果用户导航到另一个页面,或者关闭标签页/浏览器,分叉过程是否会继续? fork完成后,进程是否会自行终止?
很好的答案,谢谢。这是我正在寻找的信息 - 我对乘客查杀过程感到好奇等等。问题是,在我们进行原型设计时,我不想花费大量的时间或精力设置后台处理。虽然我们最终会使用DJ,BackgrounDRb,Resque或类似的技术,但在这种情况下它们都是过度的。我只想返回页面,同时执行一个单一的模型动作,用数据填充一些数据库表。 – vonconrad 2010-10-21 12:38:46
我用另一个想法编辑了答案。 – gertas 2010-10-24 18:34:36