msg_receive
(PHP 4 >= 4.3.0, PHP 5, PHP 7)
msg_receive — Получение сообщения из очереди сообщений
Описание
$queue
, int $desired_message_type
, int &$received_message_type
, int $max_message_size
, mixed &$message
, bool $unserialize
= true
, int $flags
= 0
, int &$error_code
= null
) : bool
msg_receive() получает первое сообщение из задаваемой параметром
queue
очереди сообщений с типом, указанным в desired_message_type
.
Список параметров
-
queue
-
Очередь сообщений.
-
desired_message_type
-
Если в
desired_message_type
указано 0, возвращается первое сообщение из очереди. Еслиdesired_message_type
больше 0, то возвращается первое сообщение с указанным типом. Еслиdesired_message_type
меньше 0, то возвращается первое сообщение с типом, меньшим или равным по модулю указанному вdesired_message_type
. Если нет сообщений, соответствующих критериям, ваш скрипт ожидает их появления в очереди. Вы можете изменить это поведение, указавMSG_IPC_NOWAIT
в параметреflags
. -
received_message_type
-
В этом параметре сохраняется тип полученного сообщения.
-
max_message_size
-
Максимальный размер принимаемого сообщения задаётся в
max_message_size
; если сообщение в очереди больше этого размера, то функция завершается ошибкой (если вы не установитеflags
как описано ниже). -
message
-
Полученное сообщение сохраняется в
message
, если не было ошибок при получении. -
unserialize
-
Если установлено в
true
, сообщение рассматривается как сериализованое с использованием того же механизма, что и в модуле сессий. Сообщение десериализуется, а затем возвращается в ваш скрипт. Это позволяет вам легко получать массивы и сложные объекты из других PHP-скриптов, или, если вы используете WDDX-сериализатор, из любых совместимых с WDDX источников.Если в
unserialize
указаноfalse
, сообщение возвращается в виде бинарно-безопасной строки. -
flags
-
Необязательный параметр
flags
позволяет вам передать флажки в низкоуровневый системный вызов msgrcv. По умолчанию его значение 0, однако вы можете указать одно или несколько следующих значений (складывая их или выполняя операцию бинарного ИЛИ).Flag values for msg_receive MSG_IPC_NOWAIT
Если нет сообщений, удовлетворяющих условиям desired_message_type
, возвращаться немедленно, а не ждать. Функция завершается ошибкой и возвращает целочисленное значениеMSG_ENOMSG
.MSG_EXCEPT
Использование этого флага в комбинации с указынным в desired_message_type
положительным значением, позволяет получить первое сообщение, тип которого не равен значениюdesired_message_type
.MSG_NOERROR
Если размер сообщения превышает max_message_size
, то установка этого флага приводит к усечению сообщения доmax_message_size
без сигнализирования об ошибке. -
error_code
-
Если функция завершается аварийно, необязательный параметр
error_code
будет содержать значение системной переменной errno.
Возвращаемые значения
Возвращает true
в случае успешного завершения или false
в случае возникновения ошибки.
При успешном завершении, структура данных очереди сообшений обновляется следующим образом:
msg_lrpid
содержит идентификатор вызвавшего процесса,
msg_qnum
уменьшается на 1 и
msg_rtime
устанавливается соответственно текущему времени.
Список изменений
Версия | Описание |
---|---|
8.0.0 |
Параметр queue теперь ожидает экземпляр SysvMessageQueue;
ранее ожидался русурс (resource).
|
Смотрите также
- msg_remove_queue() - Удаление очереди сообщений
- msg_send() - Отправка сообщения в очередь сообщений
- msg_stat_queue() - Получение информации из структуры данных очереди сообщений
- msg_set_queue() - Установка информации в структуре данных очереди сообщений