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