Это происходит потому, что при попытке вывести что-либо, например, echo "a"; flush();"
, PHP видит, что запрос был прерван, и поэтому останавливает запрос.
Просто короткая заметка. Это происходит только тогда, когда вы выводите что-то. Я предполагаю, что это связано с тем, что PHP в основном использовался для шаблонов и предназначен главным образом для вывода контента. Ну, а если контент никуда не денется, зачем продолжать обработку скрипта?
Если ты не хочешь, чтобы это прекратилось. Выполните одно из следующих действий:
Вариант A: ничего не выводить.
flush()
и echo
оба считаются выходами, наряду со многими другими функциями. PHP только проверяет, не завершился ли пользователь, когда он отправляет контент, поэтому, если ничего не выводится, он не будет проверен. Хотя это, вероятно, не так надежно, как ...
Вариант B: использовать ignore_user_abort(true)
Это обеспечит продолжение вывода сценария, даже если пользователь покидает страницу. Затем вы можете проверить с помощью connection_aborted()
, чтобы выяснить, было ли прервано соединение.
Вы можете прочитать все это в Документация по обработке соединений PHP.