【发布时间】:2011-02-03 00:47:06
【问题描述】:
在 mod_perl2 下分叉有什么禁忌吗?是否应该使用另一种方式在 mod_perl2 下运行后台进程?
【问题讨论】:
-
是的,我正要问你为什么需要分叉..然后这个问题就打开了:)
在 mod_perl2 下分叉有什么禁忌吗?是否应该使用另一种方式在 mod_perl2 下运行后台进程?
【问题讨论】:
我通常使用清理处理程序来运行 HTTP 请求完成后需要发生的任何事情:
$r->push_handlers( PerlCleanupHandler => sub { print "I'm doing stuff!" } );
如果你真的需要做一个 fork,你不应该按照常规方式做,因为你的 fork 进程会干扰 Apache 需要的各种资源,比如文件描述符和套接字,并且很难正确处理所有这些.相反,试试Apache2::SubProcess。
【讨论】:
PerlCleanupHandler 运行守护进程吗?我的意思是,一个执行时间不受限制的进程?
Apache2::SubProcess 是否与ModPerl::Registry 一起工作吗?因为我不能让它运行stackoverflow.com/questions/2559093/…
您可以考虑运行reverse proxy。您在后端有重量级进程来处理资源密集型的东西,而在前端有轻量级进程来处理简单的东西,例如返回静态内容。您的繁重流程不会占用简单的东西,因为您不必等待他们完成他们正在做的任何事情。
【讨论】: