msg_receive

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

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

Описание

msg_receive ( SysvMessageQueue $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() - Установка информации в структуре данных очереди сообщений