(PHP 4 >= 4.3.0, PHP 5, PHP 7)
msg_receive — Получение сообщения из очереди сообщений
$queue
, int $desiredmsgtype
, int &$msgtype
, int $maxsize
, mixed &$message
[, bool $unserialize = true
[, int $flags = 0
[, int &$errorcode
]]] )
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,
однако вы можете указать одно или несколько следующих значений (складывая их или
выполняя операцию бинарного ИЛИ).
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 устанавливается соответственно текущему времени.