连接丢失后强制 Apache 终止其子进程(按下“停止按钮”)

连接丢失后强制 Apache 终止其子进程(按下“停止按钮”)

在客户端(浏览器)关闭连接后,如何让 Apache 终止其产生的 CGI?

我有几个 CGI 执行长时间运行的操作,每 15 秒发送一次输出。浏览器关闭连接后,CGI(及其后代)应该被正确终止,而不是在我的系统中徘徊并占用宝贵的 Apache 插槽。

最好让 Apache 杀死它们。如果不行,我想知道 CGI 是否有办法检测与浏览器的连接是否已经断开。

编辑:显然,CGI 将关闭其 STDOUT。写入时,它们将收到 SIGPIPE 信号并可以采取相应行动(通常它们会忽略此信号)。在 Perl 中,您可以执行以下操作:

print "fresh output\n" or die "apparently my audience has left the building";

所以问题仍然存在:Apache 能否检测到破裂的管道并清理其垃圾?

在带有 Apache 2.2.20 的 Debian 上运行,并采用正常的 suexec 机制。

谢谢!

相关内容