对mod_perl2下的fork有任何禁忌症吗?是否应该使用另一种方式在mod_perl2下运行后台进程?
答案 0 :(得分:4)
我通常使用清理处理程序来运行HTTP请求完成后需要发生的任何事情:
$r->push_handlers( PerlCleanupHandler => sub { print "I'm doing stuff!" } );
如果你真的需要做一个fork,你不应该以常规的方式去做,因为你的分叉进程会干扰Apache需要的各种资源,比如文件描述符和套接字,并且很难正确处理所有这些。相反,请尝试Apache2::SubProcess。
答案 1 :(得分:0)
您可以考虑运行reverse proxy。你在后端有重量级进程处理资源密集型的东西,前端有轻量级进程来处理容易的东西,比如返回静态内容。你的繁重程序不会占用容易的东西,因为你不必等待他们完成他们正在做的任何事情。