3

在 mod_perl2 下是否有任何 fork 的禁忌症?是否应该使用另一种方式在 mod_perl2 下运行后台进程?

4

2 回答 2

4

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

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

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

于 2010-03-31T17:05:01.237 回答
0

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

于 2010-04-01T00:01:35.370 回答