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, однак ви можете вказати одне або кілька таких значень (складаючи їх або виконуючи операцію бінарного АБО).
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() - Встановлення інформації у структурі даних черги повідомлень