(PHP 4 >= 4.3.0, PHP 5, PHP 7, PHP 8)
msg_receive — Получение сообщения из очереди сообщений
$queue
,$desired_message_type
,&$received_message_type
,$max_message_size
,&$message
,$unserialize
= true
,$flags
= 0,&$error_code
= null
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, однако вы можете указать одно или несколько следующих значений (складывая их или выполняя операцию бинарного ИЛИ).
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). |