Поскольку этот вопрос может привлечь внимание людей, не использующих Java, я подумал, что упомяну поведение PHP по этому вопросу, поскольку это очень удивительно.
PHP внутренне поддерживает состояние соединения с клиентом. Возможные значения: NORMAL, ABORTED и TIMEOUT. Пока состояние соединения НОРМАЛЬНОЕ, срок службы хорош, и сценарий будет продолжать выполняться, как и ожидалось.
Если пользователь нажимает кнопку «Стоп» в своем браузере, клиент, как правило, закрывает соединение, и статус изменяется на «Прервано». Изменение статуса на ABORTED немедленно прекратит выполнение запущенного скрипта. Кроме того, то же самое происходит, когда статус изменяется на TIMEOUT (превышен параметр PHPs для допустимого времени выполнения сценариев).
Такое поведение может быть полезно в определенных обстоятельствах, но есть и другие, где оно может быть проблематичным. Кажется, что это может быть безопасно прервать в любое время во время правильного запроса GET; однако прерывание в середине запроса, вносящего изменения на сервере, может привести к только частично выполненным изменениям.
Проверьте запись руководства PHP по обработке соединений, чтобы узнать, как избежать осложнений, вызванных этим поведением:
http://www.php.net/manual/en/features.connection-handling.php