Назад | Перейти на главную страницу

Заставить 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 обнаружить сломанный канал и очистить его от мусора?

Работает на Debian с Apache 2.2.20 и обычным механизмом suexec.

Спасибо!