mirror of
https://github.com/php/doc-ru.git
synced 2025-07-22 18:26:31 +00:00

git-svn-id: https://svn.php.net/repository/phpdoc/ru/trunk@343995 c90b9560-bf6c-de11-be94-00142212c4b1
203 lines
9.1 KiB
XML
203 lines
9.1 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
||
<!-- EN-Revision: b8758b0605e80c4e3610137b7502a6abeea5c69b Maintainer: rjhdby Status: ready -->
|
||
<!-- Reviewed: yes -->
|
||
<!-- $Revision$ -->
|
||
|
||
<refentry xmlns="http://docbook.org/ns/docbook" xml:id="function.msg-receive">
|
||
<refnamediv>
|
||
<refname>msg_receive</refname>
|
||
<refpurpose>Получение сообщения из очереди сообщений</refpurpose>
|
||
</refnamediv>
|
||
|
||
<refsect1 role="description">
|
||
&reftitle.description;
|
||
<methodsynopsis>
|
||
<type>bool</type><methodname>msg_receive</methodname>
|
||
<methodparam><type>resource</type><parameter>queue</parameter></methodparam>
|
||
<methodparam><type>int</type><parameter>desiredmsgtype</parameter></methodparam>
|
||
<methodparam><type>int</type><parameter role="reference">msgtype</parameter></methodparam>
|
||
<methodparam><type>int</type><parameter>maxsize</parameter></methodparam>
|
||
<methodparam><type>mixed</type><parameter role="reference">message</parameter></methodparam>
|
||
<methodparam choice="opt"><type>bool</type><parameter>unserialize</parameter><initializer>&true;</initializer></methodparam>
|
||
<methodparam choice="opt"><type>int</type><parameter>flags</parameter><initializer>0</initializer></methodparam>
|
||
<methodparam choice="opt"><type>int</type><parameter role="reference">errorcode</parameter></methodparam>
|
||
</methodsynopsis>
|
||
<para>
|
||
<function>msg_receive</function> получает первое сообщение из задаваемой параметром
|
||
<parameter>queue</parameter> очереди сообщений с типом, указанным в <parameter>desiredmsgtype</parameter>.
|
||
</para>
|
||
</refsect1>
|
||
|
||
<refsect1 role="parameters">
|
||
&reftitle.parameters;
|
||
<para>
|
||
<variablelist>
|
||
<varlistentry>
|
||
<term><parameter>queue</parameter></term>
|
||
<listitem>
|
||
<para>
|
||
Очередь.
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
<varlistentry>
|
||
<term><parameter>desiredmsgtype</parameter></term>
|
||
<listitem>
|
||
<para>
|
||
Если в <parameter>desiredmsgtype</parameter> указано 0, возвращается первое
|
||
сообщение из очереди. Если <parameter>desiredmsgtype</parameter> больше 0, то
|
||
возвращается первое сообщение с указанным типом. Если <parameter>desiredmsgtype</parameter>
|
||
меньше 0, то возвращается первое сообщение с типом, меньшим или равным по модулю
|
||
указанному в <parameter>desiredmsgtype</parameter>. Если нет сообщений,
|
||
соответствующих критериям, ваш скрипт ожидает их появления в очереди.
|
||
Вы можете изменить это поведение, указав <constant>MSG_IPC_NOWAIT</constant> в
|
||
параметре <parameter>flags</parameter>.
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
<varlistentry>
|
||
<term><parameter>msgtype</parameter></term>
|
||
<listitem>
|
||
<para>
|
||
В этом параметре сохраняется тип полученного сообщения.
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
<varlistentry>
|
||
<term><parameter>maxsize</parameter></term>
|
||
<listitem>
|
||
<para>
|
||
Максимальный размер принимаемого сообщения задаётся в <parameter>maxsize</parameter>;
|
||
если сообщение в очереди больше этого размера, то функция завершается ошибкой
|
||
(если вы не установите <parameter>flags</parameter> как описано ниже).
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
<varlistentry>
|
||
<term><parameter>message</parameter></term>
|
||
<listitem>
|
||
<para>
|
||
Полученное сообщение сохраняется в <parameter>message</parameter>,
|
||
если не было ошибок при получении.
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
<varlistentry>
|
||
<term><parameter>unserialize</parameter></term>
|
||
<listitem>
|
||
<para>
|
||
Если установлено в &true;, сообщение рассматривается как сериализованое с
|
||
использованием того же механизма, что и в модуле сессий. Сообщение десериализуется,
|
||
а затем возвращается в ваш скрипт. Это позволяет вам легко получать массивы и
|
||
сложные объекты из других PHP-скриптов, или, если вы используете WDDX-сериализатор,
|
||
из любых совместимых с WDDX источников.
|
||
</para>
|
||
<para>
|
||
Если в <parameter>unserialize</parameter> указано &false;,
|
||
сообщение возвращается в виде бинарно-безопасной строки.
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
<varlistentry>
|
||
<term><parameter>flags</parameter></term>
|
||
<listitem>
|
||
<para>
|
||
Необязательный параметр <parameter>flags</parameter> позволяет вам передать
|
||
флажки в низкоуровневый системный вызов msgrcv. По умолчанию его значение 0,
|
||
однако вы можете указать одно или несколько следующих значений (складывая их или
|
||
выполняя операцию бинарного ИЛИ).
|
||
<table>
|
||
<title>Flag values for msg_receive</title>
|
||
<tgroup cols="2">
|
||
<tbody>
|
||
<row>
|
||
<entry><constant>MSG_IPC_NOWAIT</constant></entry>
|
||
<entry>
|
||
Если нет сообщений, удовлетворяющих условиям <parameter>desiredmsgtype</parameter>,
|
||
возвращаться немедленно, а не ждать. Функция завершается ошибкой и возвращает
|
||
целочисленное значение <constant>MSG_ENOMSG</constant>.
|
||
</entry>
|
||
</row>
|
||
<row>
|
||
<entry><constant>MSG_EXCEPT</constant></entry>
|
||
<entry>
|
||
Использование этого флага в комбинации с указынным в
|
||
<parameter>desiredmsgtype</parameter> положительным значением,
|
||
позволяет получить первое сообщение, тип которого не равен значению
|
||
<parameter>desiredmsgtype</parameter>.</entry>
|
||
</row>
|
||
<row>
|
||
<entry><constant>MSG_NOERROR</constant></entry>
|
||
<entry>
|
||
Если размер сообщения превышает <parameter>maxsize</parameter>,
|
||
то установка этого флага приводит к усечению сообщения до <parameter>maxsize</parameter>
|
||
без сигнализирования об ошибке.
|
||
</entry>
|
||
</row>
|
||
</tbody>
|
||
</tgroup>
|
||
</table>
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
<varlistentry>
|
||
<term><parameter>errorcode</parameter></term>
|
||
<listitem>
|
||
<para>
|
||
Если функция завершается аварийно, необязательный параметр <parameter>errorcode</parameter>
|
||
будет содержать значение системной переменной errno.
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
</variablelist>
|
||
</para>
|
||
</refsect1>
|
||
|
||
<refsect1 role="returnvalues">
|
||
&reftitle.returnvalues;
|
||
<para>
|
||
&return.success;
|
||
</para>
|
||
<para>
|
||
При успешном завершении, структура данных очереди сообшений обновляется следующим образом:
|
||
<literal>msg_lrpid</literal> содержит идентификатор вызвавшего процесса,
|
||
<literal>msg_qnum</literal> уменьшается на 1 и
|
||
<literal>msg_rtime</literal> устанавливается соответственно текущему времени.
|
||
</para>
|
||
</refsect1>
|
||
|
||
<refsect1 role="seealso">
|
||
&reftitle.seealso;
|
||
<para>
|
||
<simplelist>
|
||
<member><function>msg_remove_queue</function></member>
|
||
<member><function>msg_send</function></member>
|
||
<member><function>msg_stat_queue</function></member>
|
||
<member><function>msg_set_queue</function></member>
|
||
</simplelist>
|
||
</para>
|
||
</refsect1>
|
||
|
||
</refentry>
|
||
|
||
<!-- 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
|
||
-->
|