【问题标题】:Is it a bad idea to fork under mod_perl2?在 mod_perl2 下 fork 是不是一个坏主意?
【发布时间】:2011-02-03 00:47:06
【问题描述】:

在 mod_perl2 下分叉有什么禁忌吗?是否应该使用另一种方式在 mod_perl2 下运行后台进程?

【问题讨论】:

  • 是的,我正要问你为什么需要分叉..然后这个问题就打开了:)

标签: perl fork mod-perl2


【解决方案1】:

我通常使用清理处理程序来运行 HTTP 请求完成后需要发生的任何事情:

$r->push_handlers( PerlCleanupHandler => sub { print "I'm doing stuff!" } );

如果你真的需要做一个 fork,你不应该按照常规方式做,因为你的 fork 进程会干扰 Apache 需要的各种资源,比如文件描述符和套接字,并且很难正确处理所有这些.相反,试试Apache2::SubProcess

【讨论】:

  • 可以用PerlCleanupHandler 运行守护进程吗?我的意思是,一个执行时间不受限制的进程?
  • 如果你正在启动一个守护进程,你肯定想要使用一个子进程。否则,您将绑定一个 Apache 线程,该线程将永远停留在其清理阶段。
  • 您知道Apache2::SubProcess 是否与ModPerl::Registry 一起工作吗?因为我不能让它运行stackoverflow.com/questions/2559093/…
【解决方案2】:

您可以考虑运行reverse proxy。您在后端有重量级进程来处理资源密集型的东西,而在前端有轻量级进程来处理简单的东西,例如返回静态内容。您的繁重流程不会占用简单的东西,因为您不必等待他们完成他们正在做的任何事情。

【讨论】:

  • 我需要将一些数据从前端安全地传递到后端。我必须确保数据朝着正确的方向发展。因此代码校验和控制等。
猜你喜欢
  • 1970-01-01
  • 2019-02-01
  • 2010-11-29
  • 2011-11-13
  • 1970-01-01
  • 2012-01-21
  • 2010-12-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多