Força o Apache a matar seus filhos depois de perder a conexão (“botão de parada” pressionado)

2

Como posso fazer com que o Apache mate o CGI que ele gerou depois que o cliente (navegador) fechou a conexão?

Eu tenho algumas CGIs que executam operações de longa duração e enviam a saída a cada 15 segundos. Assim que o navegador fecha a conexão, o CGI (e seus descendentes) devem ser mortos adequadamente, em vez de permanecerem em volta do meu sistema e mantendo ocupados os valiosos espaços do Apache.

De preferência, o Apache deve matá-los. Se não, eu gostaria de saber se existe uma maneira de o CGI detectar se a conexão com o navegador desapareceu.

Edit: aparentemente, os CGI terão seu STDOUT fechado. Ao escrever, eles receberão um sinal SIGPIPE e poderão agir de acordo (normalmente eles ignoram esse sinal). Em Perl, você poderia fazer:

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

Então a questão permanece: o Apache poderia detectar o cano quebrado e limpar o lixo?

Rodando em Debian com Apache 2.2.20, e mecanismo suexec normal.

Obrigado!

    
por Willem 05.10.2011 / 00:34

0 respostas