msg_receive
(PHP 4 >= 4.3.0, PHP 5, PHP 7, PHP 8)
msg_receive — Liest eine Nachricht aus einer Nachrichten-Warteschlange aus
Beschreibung
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() liest die erste Nachricht vom Typ
desired_message_type aus der durch
queue angegeben Warteschlange aus.
Parameter-Liste
-
queue -
Die Nachrichten-Warteschlange.
-
desired_message_type -
Wenn
desired_message_typegleich 0 ist, wird die erste Nachricht aus der Warteschlange zurückgegeben. Wenndesired_message_typegrößer als 0 ist, wird die erste Nachricht genau diesen Typs zurückgegeben. Wenndesired_message_typekleiner als 0 ist, wird die erste Nachricht kleiner oder gleich dem absoluten Wert vondesired_message_typezurückgegeben. Wenn keine passende Nachricht existiert, blockiert diese Funktion solange, bis eine passende Nachricht verfügbar ist. Durch das Setzen des FlagsMSG_IPC_NOWAITim Parameterflagskann das blockierende Verhalten verhindert werden. -
received_message_type -
In diesem Parameter wird der Typ der empfangenen Nachricht gespeichert.
-
max_message_size -
Die maximale Größe der zu akzeptierenden Nachricht wird durch
max_message_sizeangegeben; Wenn die Nachricht in der Nachrichten-Warteschlange größer ist, als dieser Wert, schlägt die Funktion fehl (es sei denn, es wird das entsprechende Flag im Parameterflagsgesetzt). -
message -
Die empfangene Nachricht wird in
messagegespeichert, es sei denn es tritt ein Fehler beim Empfang auf. -
unserialize -
Wenn dieser Wert auf
truegesetzt wird, wird die Nachricht behandelt, als wäre sie mit demselben Mechanismus serialisiert worden, wie das Session-Modul. Die Nachricht wird deserialisiert und zurückgegeben. Dies erlaubt einen einfachen Empfang von Arrays und komplexen Objektstrukturen von anderen PHP-Skripten. Wenn Sie den WDDX-Serializer verwenden, erlaubt es den Empfang von einer WDDX-kompatiblen Quelle.Wenn
unserializefalseist, wird die Nachricht als binärsicherer String zurückgegeben. -
flags -
Der optionale Parameter
flagserlaubt die Weitergabe von Flags an den low-level msgrcv-Systemaufruf. Der Standardwert liegt bei 0, aber es können einer oder mehrere der folgenden Werte übergeben werden (AND- oder OR-verknüpft).Die Flag-Werte für msg_receive MSG_IPC_NOWAITWenn kein Wert des übergebenen Typs desired_message_typein der Warteschlange vorhanden ist, gibt die Funktion sofort zurück, statt zu warten. Die Funktion schlägt fehl und gibt den Integerwert entsprechend anMSG_ENOMSGzurück.MSG_EXCEPTDieses Flag sorgt in Kombination mit einem desired_message_typegrößer als 0 dafür, dass die Funktion die erste Nachricht zurück gbit, die nicht gleichdesired_message_typeist.MSG_NOERRORWenn die Nachricht länger als max_message_sizeist, wird durch Setzen diese Flags die Nachricht aufmax_message_sizegekürzt, und die Funktion signalisiert keinen Fehler. -
error_code -
Wenn die Funktion fehlschlägt, wird der optionale
error_codeauf den Wert der System-errno-Variable gesetzt.
Rückgabewerte
Gibt bei Erfolg true zurück. Bei einem Fehler wird false zurückgegeben.
Bei erfolgreicher Ausführung wird die Datenstruktur der
Nachrichten-Warteschlange folgendermaßen aktualisiert:
msg_lrpid wird auf die Prozess-ID des aufrufenden
Prozesses gesetzt, msg_qnum wird um 1 dekrementiert, und
msg_rtime wird auf die aktuelle Zeit gesetzt.
Changelog
| Version | Beschreibung |
|---|---|
| 8.0.0 |
queue erwartet nun eine
SysvMessageQueue-Instanz; vorher wurde eine
resource erwartet.
|
Siehe auch
- msg_remove_queue() - Entfernt eine Nachrichten-Warteschlange
- msg_send() - Send a message to a message queue
- msg_stat_queue() - Liefert Informationen zur Datenstruktur einer Nachrichten-Warteschlange
- msg_set_queue() - Setzt Metadaten in der Datenstruktur der Nachrichten-Warteschlange

