mirror of
https://github.com/php/doc-ru.git
synced 2026-03-28 01:32:09 +01:00
225 lines
10 KiB
XML
225 lines
10 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
||
<!-- EN-Revision: f7e33278a909d7f7bf491f77cb10c93581091736 Maintainer: rjhdby Status: ready -->
|
||
<!-- Reviewed: no -->
|
||
<refentry xml:id="function.msg-receive" xmlns="http://docbook.org/ns/docbook">
|
||
<refnamediv>
|
||
<refname>msg_receive</refname>
|
||
<refpurpose>Получает сообщение из очереди сообщений</refpurpose>
|
||
</refnamediv>
|
||
|
||
<refsect1 role="description">
|
||
&reftitle.description;
|
||
<methodsynopsis>
|
||
<type>bool</type><methodname>msg_receive</methodname>
|
||
<methodparam><type>SysvMessageQueue</type><parameter>queue</parameter></methodparam>
|
||
<methodparam><type>int</type><parameter>desired_message_type</parameter></methodparam>
|
||
<methodparam><type>int</type><parameter role="reference">received_message_type</parameter></methodparam>
|
||
<methodparam><type>int</type><parameter>max_message_size</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">error_code</parameter><initializer>&null;</initializer></methodparam>
|
||
</methodsynopsis>
|
||
<para>
|
||
Функция <function>msg_receive</function> получает первое сообщение из очереди сообщений
|
||
<parameter>queue</parameter> с типом, который указали в параметре <parameter>desired_message_type</parameter>.
|
||
</para>
|
||
</refsect1>
|
||
|
||
<refsect1 role="parameters">
|
||
&reftitle.parameters;
|
||
<para>
|
||
<variablelist>
|
||
<varlistentry>
|
||
<term><parameter>queue</parameter></term>
|
||
<listitem>
|
||
<para>
|
||
Очередь сообщений.
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
<varlistentry>
|
||
<term><parameter>desired_message_type</parameter></term>
|
||
<listitem>
|
||
<para>
|
||
Если для параметра <parameter>desired_message_type</parameter> указали значение 0, возвращается первое
|
||
сообщение из очереди. Если значение параметра <parameter>desired_message_type</parameter> больше 0, то
|
||
возвращается первое сообщение с указанным типом. Если значение параметра <parameter>desired_message_type</parameter>
|
||
меньше 0, то возвращается первое сообщение с типом, которое меньше или равно по модулю
|
||
значению параметра <parameter>desired_message_type</parameter>. Если нет сообщений,
|
||
которые соответствуют критериям, скрипт ожидает их появления в очереди.
|
||
Это поведение изменяют через константу <constant>MSG_IPC_NOWAIT</constant>
|
||
в параметре <parameter>flags</parameter>.
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
<varlistentry>
|
||
<term><parameter>received_message_type</parameter></term>
|
||
<listitem>
|
||
<para>
|
||
В этом параметре сохраняется тип полученного сообщения.
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
<varlistentry>
|
||
<term><parameter>max_message_size</parameter></term>
|
||
<listitem>
|
||
<para>
|
||
Максимальный размер принимаемого сообщения задаётся в параметре <parameter>max_message_size</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>desired_message_type</parameter>,
|
||
возвращаться немедленно, а не ждать. Функция завершается ошибкой и возвращает
|
||
целочисленное значение <constant>MSG_ENOMSG</constant>.
|
||
</entry>
|
||
</row>
|
||
<row>
|
||
<entry><constant>MSG_EXCEPT</constant></entry>
|
||
<entry>
|
||
Установка этого флага в комбинации с положительным значением параметра
|
||
<parameter>desired_message_type</parameter>,
|
||
позволяет получить первое сообщение, тип которого не равен значению
|
||
<parameter>desired_message_type</parameter>.</entry>
|
||
</row>
|
||
<row>
|
||
<entry><constant>MSG_NOERROR</constant></entry>
|
||
<entry>
|
||
Если размер сообщения превышает значение параметра <parameter>max_message_size</parameter>,
|
||
то установка этого флага приводит к усечению сообщения до значения параметра <parameter>max_message_size</parameter>
|
||
без сигнализирования об ошибке.
|
||
</entry>
|
||
</row>
|
||
</tbody>
|
||
</tgroup>
|
||
</table>
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
<varlistentry>
|
||
<term><parameter>error_code</parameter></term>
|
||
<listitem>
|
||
<para>
|
||
Если функция завершается аварийно, необязательный параметр <parameter>error_code</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="changelog">
|
||
&reftitle.changelog;
|
||
<para>
|
||
<informaltable>
|
||
<tgroup cols="2">
|
||
<thead>
|
||
<row>
|
||
<entry>&Version;</entry>
|
||
<entry>&Description;</entry>
|
||
</row>
|
||
</thead>
|
||
<tbody>
|
||
<row>
|
||
<entry>8.0.0</entry>
|
||
<entry>
|
||
Параметр <parameter>queue</parameter> теперь ожидает экземпляр класса <classname>SysvMessageQueue</classname>;
|
||
раньше ожидался ресурс (<type>resource</type>).
|
||
</entry>
|
||
</row>
|
||
</tbody>
|
||
</tgroup>
|
||
</informaltable>
|
||
</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
|
||
-->
|