我在FCGI模式(Apache)中使用相同的用户同时运行多个Perl舞者应用程序。据我所知,如果当前的应用程序繁忙,Apache(或任何其他网络服务器)将分叉一个新的舞者应用程序。
为了确保没有访客因舞者关闭而中断我喜欢让舞者处理当前连接,直到完成,然后exit
/ last
这个过程。
如何使用kill信号HUP
关闭Perl舞者应用程序来执行这样的关闭?
要推出新版本的舞者应用程序,我使用pkill -HUP perl
作为舞者用户“关闭”进程。但是目前(由于缺少信号处理程序),它更像是向下射击 。
答案 0 :(得分:2)
solution by mugen kenichi有效(starman
):
如果您能够更改基础架构,可以尝试一种支持您需求的plack Web服务器。 starman和hyponotoad都在SIGHUP上进行了优雅的重启
关于<% request.uri_base %>
存在一些缺点,因此我们必须使用硬编码的URI路径进行开发。不是很帅但很必要。
答案 1 :(得分:0)
如果我正确地阅读了您的问题,您会担心Apache / FCGI可能会在处理请求时杀死Dancer应用程序。这是对的吗?
如果是这样,请不要担心。 Apache / FCGI不这样做。当它分叉处理程序的新实例时,因为现有的处理程序正忙,除了现有实例之外,这是一个新的。现有的只剩下他们正在做的事情。