mirror of
https://github.com/php/doc-ru.git
synced 2026-03-24 07:42:22 +01:00
* 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
400 lines
15 KiB
XML
400 lines
15 KiB
XML
<?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
|
||
-->
|