1
0
mirror of https://github.com/php/doc-ru.git synced 2026-03-24 07:42:22 +01:00
Files
archived-doc-ru/reference/event/eventbufferevent.xml
Mikhail Alferov d3a13747bc Update 23ea6be to En (#1062)
* Update pattern.matching.xml to en

* Update createstopped.xml to en

* Update construct.xml to en

* Update createstopped.xml исправил формулировку

* Update createstopped.xml to en

* Update construct.xml to en

* Update createstopped.xml to en

* Update construct.xml to en

* Update construct.xml Добавил кавычки к названию страницы

* Update createstopped.xml to en

* Update construct.xml to en

* Update createstopped.xml to en

* Update createstopped.xml исправил ошибку

* Update construct.xml to en

* Update createstopped.xml to en

* Update construct.xml to en

* Update createstopped.xml to en

* Update prev.xml to en

* Update stat.xml to en

* Update construct.xml to en

* Update createstopped.xml to en

* Update set.xml to en

* Update clear.xml to en

* Update feed.xml to en

* Update invoke.xml to en

* Update setcallback.xml to en

* Update book.xml to en

* Update event.callbacks.xml to en

* Update event.constructing.signal.events.xml to en

* Update event.flags.xml to en

* Update event.constructing.signal.events.xml исправил формулировку

* Update event.persistence.xml to en

* Update event.xml to en

* Update eventbase.xml to en

* Update eventbuffer.xml to en

* Update eventbufferevent.about.callbacks.xml to en

* Update eventbufferevent.xml to en

* Update eventconfig.xml to en

* Update eventsslcontext.xml to en

* Update eventutil.xml to en

* Update setup.xml to en

* Update construct.xml to en

* Update free.xml to en

* Update pending.xml to en

* Update event.callbacks.xml исправил формулировку

* Update set.xml to en

* Update set.xml формулировка

* Update settimer.xml to en

* Update signal.xml to en

* Update timer.xml to en

* Update free.xml to en

* Update getfeatures.xml to en

* Update gotexit.xml to en

* Update gotstop.xml to en

* Update loop.xml to en

* Update addbuffer.xml to en

* Update copyout.xml to en

* Update drain.xml to en

* Update prependbuffer.xml to en

* Update readline.xml to en

* Update search.xml to en

* Update searcheol.xml to en

* Update search.xml исправил формулировку

* Update unlock.xml to en

* Update connecthost.xml to en

* Update construct.xml to en

* Update createpair.xml to en

* Update disable.xml to en

* Update enable.xml to en

* Update free.xml to en

* Update getdnserrorstring.xml to en

* Update readbuffer.xml to en

* Update setcallbacks.xml to en

* Update setwatermark.xml to en

* Update setwatermark.xml Исправил ошибку

* Update sslfilter.xml to en

* Update sslsocket.xml to en

* Update avoidmethod.xml to en

* Update setmaxdispatchinterval.xml to en

* Update loadhosts.xml to en

* Update parseresolvconf.xml to en

* Update setoption.xml to en

* Update accept.xml to en

* Update setallowedmethods.xml to en

* Update setcallback.xml to en

* Update setdefaultcallback.xml to en

* Update makerequest.xml to en

* Update addheader.xml to en

* Update findheader.xml to en

* Update getconnection.xml to en

* Update sendreplystart.xml to en

* Update construct.xml to en

* Update construct.xml to en

* Update setsocketoption.xml to en

* Update pattern.matching.xml to en
2025-04-25 17:47:22 +03:00

400 lines
15 KiB
XML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 23ea6be076881a34e1d454e9680968ece085f7f6 Maintainer: rjhdby Status: ready -->
<!-- Reviewed: no -->
<reference xml:id="class.eventbufferevent" role="class" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xi="http://www.w3.org/2001/XInclude">
<title>Класс EventBufferEvent</title>
<titleabbrev>EventBufferEvent</titleabbrev>
<partintro>
<!-- {{{ EventBufferEvent intro -->
<section xml:id="eventbufferevent.intro">
&reftitle.intro;
<para>
Класс представляет буферизированное событие Libevent.
</para>
<para>
В дополнение к реагированию на события
приложение часто буферизирует часть
данных. В ситуациях, при которых требуется записать данные,
стандартный алгоритм записи выглядит так:
</para>
<orderedlist>
<listitem>
<para>
Решается, что требуется записать часть данных в соединение; данные складываются
в буфер
</para>
</listitem>
<listitem>
<para>
Ожидается, когда соединение станет доступным для записи.
</para>
</listitem>
<listitem>
<para>
Записывается столько данных, сколько получится.
</para>
</listitem>
<listitem>
<para>
Запоминается, сколько данных записалось и, если остались недозаписанные данные,
выжидается, когда соединение снова станет доступно для записи.
</para>
</listitem>
</orderedlist>
<para>
Этот шаблон буферизированного ввода-вывода настолько распространён, что
библиотека Libevent предоставляет встроенный механизм для него.
«Буферизированное событие» состоит из транспорта, например сокета,
буфера чтения и буфера записи. В отличие от стандартных событий, которые
вызывают callback-функцию, когда транспорт становится доступен для
чтения или записи, буферизованное событие вызывает функцию обратного
вызова после считывания или записи достаточного количества данных.
</para>
</section>
<!-- }}} -->
<section xml:id="eventbufferevent.synopsis">
&reftitle.classsynopsis;
<!-- {{{ Synopsis -->
<classsynopsis>
<ooclass>
<classname>EventBufferEvent</classname>
</ooclass>
<!-- {{{ Class synopsis -->
<classsynopsisinfo>
<ooclass>
<modifier>final</modifier>
<classname>EventBufferEvent</classname>
</ooclass>
</classsynopsisinfo>
<!-- }}} -->
<classsynopsisinfo role="comment">&Constants;</classsynopsisinfo>
<fieldsynopsis>
<modifier>const</modifier>
<type>int</type>
<varname linkend="eventbufferevent.constants.reading">EventBufferEvent::READING</varname>
<initializer>1</initializer>
</fieldsynopsis>
<fieldsynopsis>
<modifier>const</modifier>
<type>int</type>
<varname linkend="eventbufferevent.constants.writing">EventBufferEvent::WRITING</varname>
<initializer>2</initializer>
</fieldsynopsis>
<fieldsynopsis>
<modifier>const</modifier>
<type>int</type>
<varname linkend="eventbufferevent.constants.eof">EventBufferEvent::EOF</varname>
<initializer>16</initializer>
</fieldsynopsis>
<fieldsynopsis>
<modifier>const</modifier>
<type>int</type>
<varname linkend="eventbufferevent.constants.error">EventBufferEvent::ERROR</varname>
<initializer>32</initializer>
</fieldsynopsis>
<fieldsynopsis>
<modifier>const</modifier>
<type>int</type>
<varname linkend="eventbufferevent.constants.timeout">EventBufferEvent::TIMEOUT</varname>
<initializer>64</initializer>
</fieldsynopsis>
<fieldsynopsis>
<modifier>const</modifier>
<type>int</type>
<varname linkend="eventbufferevent.constants.connected">EventBufferEvent::CONNECTED</varname>
<initializer>128</initializer>
</fieldsynopsis>
<fieldsynopsis>
<modifier>const</modifier>
<type>int</type>
<varname linkend="eventbufferevent.constants.opt-close-on-free">EventBufferEvent::OPT_CLOSE_ON_FREE</varname>
<initializer>1</initializer>
</fieldsynopsis>
<fieldsynopsis>
<modifier>const</modifier>
<type>int</type>
<varname linkend="eventbufferevent.constants.opt-threadsafe">EventBufferEvent::OPT_THREADSAFE</varname>
<initializer>2</initializer>
</fieldsynopsis>
<fieldsynopsis>
<modifier>const</modifier>
<type>int</type>
<varname linkend="eventbufferevent.constants.opt-defer-callbacks">EventBufferEvent::OPT_DEFER_CALLBACKS</varname>
<initializer>4</initializer>
</fieldsynopsis>
<fieldsynopsis>
<modifier>const</modifier>
<type>int</type>
<varname linkend="eventbufferevent.constants.opt-unlock-callbacks">EventBufferEvent::OPT_UNLOCK_CALLBACKS</varname>
<initializer>8</initializer>
</fieldsynopsis>
<fieldsynopsis>
<modifier>const</modifier>
<type>int</type>
<varname linkend="eventbufferevent.constants.ssl-open">EventBufferEvent::SSL_OPEN</varname>
<initializer>0</initializer>
</fieldsynopsis>
<fieldsynopsis>
<modifier>const</modifier>
<type>int</type>
<varname linkend="eventbufferevent.constants.ssl-connecting">EventBufferEvent::SSL_CONNECTING</varname>
<initializer>1</initializer>
</fieldsynopsis>
<fieldsynopsis>
<modifier>const</modifier>
<type>int</type>
<varname linkend="eventbufferevent.constants.ssl-accepting">EventBufferEvent::SSL_ACCEPTING</varname>
<initializer>2</initializer>
</fieldsynopsis>
<classsynopsisinfo role="comment">&Properties;</classsynopsisinfo>
<fieldsynopsis>
<modifier>public</modifier>
<type>int</type>
<varname linkend="eventbufferevent.props.fd">fd</varname>
</fieldsynopsis>
<fieldsynopsis>
<modifier>public</modifier>
<type>int</type>
<varname linkend="eventbufferevent.props.priority">priority</varname>
</fieldsynopsis>
<fieldsynopsis>
<modifier>public</modifier>
<modifier>readonly</modifier>
<type>EventBuffer</type>
<varname linkend="eventbufferevent.props.input">input</varname>
</fieldsynopsis>
<fieldsynopsis>
<modifier>public</modifier>
<modifier>readonly</modifier>
<type>EventBuffer</type>
<varname linkend="eventbufferevent.props.output">output</varname>
</fieldsynopsis>
<classsynopsisinfo role="comment">&Methods;</classsynopsisinfo>
<xi:include xpointer="xmlns(db=http://docbook.org/ns/docbook) xpointer(id('class.eventbufferevent')/db:refentry/db:refsect1[@role='description']/descendant::db:methodsynopsis[1])" />
</classsynopsis>
<!-- }}} -->
</section>
<!-- {{{ EventBufferEvent properties -->
<section xml:id="eventbufferevent.props">
&reftitle.properties;
<variablelist>
<varlistentry xml:id="eventbufferevent.props.fd">
<term>
<varname>fd</varname>
</term>
<listitem>
<para>
Числовой файловый дескриптор, который связан с событием буфера.
Обычно представляет связанный сокет. Дескриптор равен &null;, если
с событием буфера не связан файловый дескриптор (сокет).
</para>
</listitem>
</varlistentry>
<varlistentry xml:id="eventbufferevent.props.priority">
<term>
<varname>priority</varname>
</term>
<listitem>
<para>
Приоритет событий, через которые реализуют события буфера.
</para>
</listitem>
</varlistentry>
<varlistentry xml:id="eventbufferevent.props.input">
<term>
<varname>input</varname>
</term>
<listitem>
<para>
Нижележащий объект входящего буфера (<classname>EventBuffer</classname>).
</para>
</listitem>
</varlistentry>
<varlistentry xml:id="eventbufferevent.props.output">
<term>
<varname>output</varname>
</term>
<listitem>
<para>
Нижележащий объект исходящего буфера (<classname>EventBuffer</classname>).
</para>
</listitem>
</varlistentry>
</variablelist>
</section>
<!-- }}} -->
<!-- {{{ EventBufferEvent constants -->
<section xml:id="eventbufferevent.constants">
&reftitle.constants;
<variablelist>
<varlistentry xml:id="eventbufferevent.constants.reading">
<term>
<constant>EventBufferEvent::READING</constant>
</term>
<listitem>
<para>
Событие произошло в момент операции чтения из bufferevent. Проверьте
другие флаги для этого события.
</para>
</listitem>
</varlistentry>
<varlistentry xml:id="eventbufferevent.constants.writing">
<term>
<constant>EventBufferEvent::WRITING</constant>
</term>
<listitem>
<para>
Событие произошло в момент операции записи в bufferevent. Проверьте
другие флаги для этого события.
</para>
</listitem>
</varlistentry>
<varlistentry xml:id="eventbufferevent.constants.eof">
<term>
<constant>EventBufferEvent::EOF</constant>
</term>
<listitem>
<para>
Получен признак конца файла для буферизированного события.
</para>
</listitem>
</varlistentry>
<varlistentry xml:id="eventbufferevent.constants.error">
<term>
<constant>EventBufferEvent::ERROR</constant>
</term>
<listitem>
<para>
Возникла ошибка во время операции с bufferevent. Подробную информацию
об ошибке получают методом
<methodname>EventUtil::getLastSocketErrno</methodname>
и/или
<methodname>EventUtil::getLastSocketError</methodname>.
</para>
</listitem>
</varlistentry>
<varlistentry xml:id="eventbufferevent.constants.timeout">
<term>
<constant>EventBufferEvent::TIMEOUT</constant>
</term>
<listitem>
<para></para>
</listitem>
</varlistentry>
<varlistentry xml:id="eventbufferevent.constants.connected">
<term>
<constant>EventBufferEvent::CONNECTED</constant>
</term>
<listitem>
<para>
Запрошенное соединение с bufferevent установлено.
</para>
</listitem>
</varlistentry>
<varlistentry xml:id="eventbufferevent.constants.opt-close-on-free">
<term>
<constant>EventBufferEvent::OPT_CLOSE_ON_FREE</constant>
</term>
<listitem>
<para>
Закрыть нижележащий транспорт, когда объект буферизированного
события уничтожен. Закрывается сокет, уничтожается буфер и т. д.
</para>
</listitem>
</varlistentry>
<varlistentry xml:id="eventbufferevent.constants.opt-threadsafe">
<term>
<constant>EventBufferEvent::OPT_THREADSAFE</constant>
</term>
<listitem>
<para>
Автоматически размещать блокировки для bufferevent, чтобы
безопасно использовать многопоточность.
</para>
</listitem>
</varlistentry>
<varlistentry xml:id="eventbufferevent.constants.opt-defer-callbacks">
<term>
<constant>EventBufferEvent::OPT_DEFER_CALLBACKS</constant>
</term>
<listitem>
<para>
С этим флагом bufferevent откладывает все свои функции обратного вызова.
Подробнее об отложенных функциях обратного вызова рассказывает страница
<link xlink:href="http://www.wangafu.net/~nickm/libevent-book/Ref6_bufferevent.html#_deferred_callbacks">Быстрое переносимое неблокирующее сетевое программирование с Libevent и отложенными callback-функциями</link>.
</para>
</listitem>
</varlistentry>
<varlistentry xml:id="eventbufferevent.constants.opt-unlock-callbacks">
<term>
<constant>EventBufferEvent::OPT_UNLOCK_CALLBACKS</constant>
</term>
<listitem>
<para>
По умолчанию, когда bufferevent настроли как потокобезопасный,
для буферизированного события сохраняются блокировки при запуске
любых пользовательских функций обратного вызова.
Установка этого флага говорит Libevent убирать блокировки при вызове
этих callback-функций.
</para>
</listitem>
</varlistentry>
<varlistentry xml:id="eventbufferevent.constants.ssl-open">
<term>
<constant>EventBufferEvent::SSL_OPEN</constant>
</term>
<listitem>
<para>
Подтверждение SSL завершено.
</para>
</listitem>
</varlistentry>
<varlistentry xml:id="eventbufferevent.constants.ssl-connecting">
<term>
<constant>EventBufferEvent::SSL_CONNECTING</constant>
</term>
<listitem>
<para>
В текущий момент SSL участвует в установлении соединения как клиент.
</para>
</listitem>
</varlistentry>
<varlistentry xml:id="eventbufferevent.constants.ssl-accepting">
<term>
<constant>EventBufferEvent::SSL_ACCEPTING</constant>
</term>
<listitem>
<para>
В текущий момент SSL участвует в установлении соединения как сервер.
</para>
</listitem>
</varlistentry>
</variablelist>
</section>
<!-- }}} -->
</partintro>
&reference.event.entities.eventbufferevent;
</reference><!-- 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
-->