msg_receive

(PHP 4 >= 4.3.0, PHP 5, PHP 7)

msg_receiveПолучение сообщения из очереди сообщений

Описание

msg_receive ( resource $queue , int $desiredmsgtype , int &$msgtype , int $maxsize , mixed &$message [, bool $unserialize = TRUE [, int $flags = 0 [, int &$errorcode ]]] ) : bool

msg_receive() получает первое сообщение из задаваемой параметром queue очереди сообщений с типом, указанным в desiredmsgtype.

Список параметров

queue

Идентификатор ресурса очереди.

desiredmsgtype

Если в desiredmsgtype указано 0, возвращается первое сообщение из очереди. Если desiredmsgtype больше 0, то возвращается первое сообщение с указанным типом. Если desiredmsgtype меньше 0, то возвращается первое сообщение с типом, меньшим или равным по модулю указанному в desiredmsgtype. Если нет сообщений, соответствующих критериям, ваш скрипт ожидает их появления в очереди. Вы можете изменить это поведение, указав MSG_IPC_NOWAIT в параметре flags.

msgtype

В этом параметре сохраняется тип полученного сообщения.

maxsize

Максимальный размер принимаемого сообщения задаётся в maxsize; если сообщение в очереди больше этого размера, то функция завершается ошибкой (если вы не установите flags как описано ниже).

message

Полученное сообщение сохраняется в message, если не было ошибок при получении.

unserialize

Если установлено в TRUE, сообщение рассматривается как сериализованое с использованием того же механизма, что и в модуле сессий. Сообщение десериализуется, а затем возвращается в ваш скрипт. Это позволяет вам легко получать массивы и сложные объекты из других PHP-скриптов, или, если вы используете WDDX-сериализатор, из любых совместимых с WDDX источников.

Если в unserialize указано FALSE, сообщение возвращается в виде бинарно-безопасной строки.

flags

Необязательный параметр flags позволяет вам передать флажки в низкоуровневый системный вызов msgrcv. По умолчанию его значение 0, однако вы можете указать одно или несколько следующих значений (складывая их или выполняя операцию бинарного ИЛИ).

Flag values for msg_receive
MSG_IPC_NOWAIT Если нет сообщений, удовлетворяющих условиям desiredmsgtype, возвращаться немедленно, а не ждать. Функция завершается ошибкой и возвращает целочисленное значение MSG_ENOMSG.
MSG_EXCEPT Использование этого флага в комбинации с указынным в desiredmsgtype положительным значением, позволяет получить первое сообщение, тип которого не равен значению desiredmsgtype.
MSG_NOERROR Если размер сообщения превышает maxsize, то установка этого флага приводит к усечению сообщения до maxsize без сигнализирования об ошибке.

errorcode

Если функция завершается аварийно, необязательный параметр errorcode будет содержать значение системной переменной errno.

Возвращаемые значения

Возвращает TRUE в случае успешного завершения или FALSE в случае возникновения ошибки.

При успешном завершении, структура данных очереди сообшений обновляется следующим образом: msg_lrpid содержит идентификатор вызвавшего процесса, msg_qnum уменьшается на 1 и msg_rtime устанавливается соответственно текущему времени.

Смотрите также

  • msg_remove_queue() - Удаление очереди сообщений
  • msg_send() - Отправка сообщения в очередь сообщений
  • msg_stat_queue() - Получение информации из структуры данных очереди сообщений
  • msg_set_queue() - Установка информации в структуре данных очереди сообщений