![连接丢失后强制 Apache 终止其子进程(按下“停止按钮”)](https://linux22.com/image/563490/%E8%BF%9E%E6%8E%A5%E4%B8%A2%E5%A4%B1%E5%90%8E%E5%BC%BA%E5%88%B6%20Apache%20%E7%BB%88%E6%AD%A2%E5%85%B6%E5%AD%90%E8%BF%9B%E7%A8%8B%EF%BC%88%E6%8C%89%E4%B8%8B%E2%80%9C%E5%81%9C%E6%AD%A2%E6%8C%89%E9%92%AE%E2%80%9D%EF%BC%89.png)
在客户端(浏览器)关闭连接后,如何让 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 机制。
谢谢!