msg_receive

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

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() - Встановлення інформації у структурі даних черги повідомлень