mirror of
https://github.com/php/doc-ru.git
synced 2025-08-16 18:22:04 +00:00
98 lines
6.5 KiB
XML
98 lines
6.5 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
||
<!-- EN-Revision: dc0f955be2a10b707ae06f7da69f52fab24df3d1 Maintainer: shein Status: ready -->
|
||
<!-- Reviewed: yes Maintainer: rjhdby -->
|
||
<!-- $Revision$ -->
|
||
<chapter xml:id="features.connection-handling" xmlns="http://docbook.org/ns/docbook">
|
||
<title>Работа с соединениями</title>
|
||
|
||
<para>
|
||
Статус соединения сохраняется внутренними механизмами PHP.
|
||
Ниже перечислены четыре возможные состояния:
|
||
<itemizedlist>
|
||
<listitem><simpara>0 - NORMAL</simpara></listitem>
|
||
<listitem><simpara>1 - ABORTED</simpara></listitem>
|
||
<listitem><simpara>2 - TIMEOUT</simpara></listitem>
|
||
<listitem><simpara>3 - ABORTED и TIMEOUT</simpara></listitem>
|
||
</itemizedlist>
|
||
</para>
|
||
|
||
<simpara>
|
||
Во время штатного выполнения PHP-скрипта установлен статус NORMAL.
|
||
В случае, если удалённый клиент разорвал соединение, статус изменяется
|
||
на ABORTED. Чаще всего отсоединение удалённого клиента происходит при
|
||
нажатии кнопки "Stop" в браузере. В случае, если достигается
|
||
установленный временной лимит (ознакомьтесь с функцией
|
||
<function>set_time_limit</function>), будет установлен статус TIMEOUT.
|
||
</simpara>
|
||
|
||
<simpara>
|
||
Вы можете решать, приводит ли отключение клиента к завершению вашего
|
||
скрипта. Иногда бывает необходимо, чтобы скрипт выполнился до конца, даже
|
||
если отсутствует удалённый браузер, которому адресован весь вывод.
|
||
По умолчанию скрипт завершает свою работу при отключении клиента. Это
|
||
поведение может быть изменено при помощи опции ignore_user_abort
|
||
в конфигурационном файле &php.ini;. Такого же результата
|
||
можно добиться, указав <literal>php_value ignore_user_abort</literal> в конфигурационном
|
||
файле Apache &httpd.conf; или воспользовавшись функцией
|
||
<function>ignore_user_abort</function>.
|
||
Если вы явно не указали на необходимость игнорировать разрыв соединения
|
||
с клиентом, выполнение скрипта будет прервано. Исключением является
|
||
тот случай, если используя <function>register_shutdown_function</function>,
|
||
вы указали специальную функцию, вызываемую при завершении скрипта.
|
||
В таком случае после того, как пользователь нажал кнопку "Stop" в своём
|
||
браузере, при первой же попытке что-либо вывести PHP обнаруживает, что
|
||
соединение с клиентом было утеряно, и вызывает завершающую функцию.
|
||
Эта функция также вызывается при нормальном завершении работы вашего
|
||
скрипта, поэтому для того, чтобы выполнить некоторые специфические
|
||
действия при отсоединении клиента, вам понадобится функция
|
||
<function>connection_aborted</function>, которая возвращает
|
||
&true;, если соединение было разорвано.
|
||
</simpara>
|
||
|
||
<simpara>
|
||
Выполнение вашего скрипта также может быть прервано встроенным таймером.
|
||
Стандартное ограничение по времени составляет 30 секунд, изменить его
|
||
можно при помощи директивы <option>max_execution_time</option> в конфигурационном
|
||
файле &php.ini;. Такого же результата можно достичь,
|
||
добавив <literal>php_value max_execution_time</literal> в конфигурационный файл Apache
|
||
&httpd.conf; или воспользовавшись функцией <function>set_time_limit</function>.
|
||
При достижении скриптом временного лимита выполнение скрипта прерывается
|
||
и вызывается завершающая функция, если она была указана. Уточнить
|
||
причину завершения скрипта вы можете при помощи функции
|
||
<function>connection_status</function>, которая возвращает
|
||
2, если скрипт был прерван по достижению временного ограничения.
|
||
</simpara>
|
||
|
||
<simpara>
|
||
Единственное, что следует заметить - что оба статуса: ABORTED и TIMEOUT, -
|
||
могут быть установлены одновременно. Это может произойти в том случае,
|
||
если вы явно указали необходимость игнорировать отсоединение удалённого
|
||
клиента. В таком случае после разрыва соединения, отметив этот факт,
|
||
PHP продолжит выполнение скрипта, и при достижении временного лимита будет
|
||
вызвана завершающая функция, если таковая была указана. В этой точке
|
||
вы можете обнаружить, что <function>connection_status</function>
|
||
вернёт значение 3.
|
||
</simpara>
|
||
</chapter>
|
||
|
||
<!-- Keep this comment at the end of the file
|
||
Local variables:
|
||
mode: sgml
|
||
sgml-omittag:t
|
||
sgml-shorttag:t
|
||
sgml-minimize-attributes:nil
|
||
sgml-always-quote-attributes:t
|
||
sgml-indent-step:1
|
||
sgml-indent-data:t
|
||
indent-tabs-mode:nil
|
||
sgml-parent-document:nil
|
||
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
|
||
sgml-exposed-tags:nil
|
||
sgml-local-catalogs:nil
|
||
sgml-local-ecat-files:nil
|
||
End:
|
||
vim600: syn=xml fen fdm=syntax fdl=2 si
|
||
vim: et tw=78 syn=sgml
|
||
vi: ts=1 sw=1
|
||
-->
|