Книга: Справочник по PHP

Статус подключений

Статус подключений

Внутренне PHP имеет три статуса подключения:

При нормальном выполнении сценария активно состояние NORMAL. Если во время загрузки страницы пользователь нажал кнопку STOP, активным становится состояние ABORTED. Если сценарий выполняется дольше отведенного ему времени, устанавливается флаг состояния TIMEOUT. Возможно определить, как должен вести себя сценарий в зависимости от этих условий.

Если требуется, чтобы сценарий продолжал свое выполнение при разрыве соединения пользователем, нужно установить в файле конфигурации значение параметра ignore_user_abort = 1 (это также можно сделать в файлах конфигурации Apache). Можно также воспользоваться функцией ignore_user_abort(). В противном случае, сценарий завершается.

Чтобы игнорировать завершение сценария таймером, необходимо использовать функцию set_time_limit().

Если функцией register_shutdown_function() была установлена функция "запускаемая при завершении сценария", то, вне зависимости от статуса подключения, она будет исполнена перед тем, как сценарий завершится. И в "завершающей" функции можно будет выяснить (с помощью функции: connection_aborted(), connection_timeout() и connection_status()), был ли сценарий завершен нормально или досрочно.

connection_aborted

Определения разрыва подключения пользователем.

Синтаксис:

int connection_aborted(void);

Функция connection_aborted() возвращает true, если подключение было разорвано пользователем.

connection_status

Определения статуса подключения.

Синтаксис:

int connection_status(void);

Возвращает значение битового поля, позволяющее выяснить в "завершающей" функции, был ли сценарий завершен досрочно и причину этого. Например, если возвращается 3 (ABORTED | TIMEOUT), то это означает, что время выполнения истекло, а также то, что пользователь отказался от загрузки страницы.

Если возвращается 0 (то есть значение NORMAL), то это означает, что выполнение сценария не было прервано.

connection_timeout

Определения наступления тайм-аута.

Синтаксис:

int connection_timeout(void);

Возвращает true, если время выполнения сценария истекло.

ignore_user_abort

Прерывание сценария при разрыве подключения.

Синтаксис:

int ignore_user_abort([int setting]);

Аргументом setting можно указать, необходимо ли досрочно завершать выполнение сценария, если связь с клиентом потеряна. Если аргумент не указан, то возвращается текущая установка.

register_shutdown_function

Устанавливает функцию, которая будет выполнена при завершении.

Синтаксис:

int register_shutdown_function(string func);

Регистрирует функцию с именем func в качестве функции, запускаемой после завершения сценария.

Заметьте: так как после завершения функции никакие средства вывода недоступны, это делает для функции, зарегистрированной в качестве "завершающей", недоступными обычные средства отладки, такие команды как print или echo.

Оглавление книги


Генерация: 0.030. Запросов К БД/Cache: 0 / 0
поделиться
Вверх Вниз