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_type
gleich 0 ist, wird die erste Nachricht aus der Warteschlange zurückgegeben. Wenndesired_message_type
größer als 0 ist, wird die erste Nachricht genau diesen Typs zurückgegeben. Wenndesired_message_type
kleiner als 0 ist, wird die erste Nachricht kleiner oder gleich dem absoluten Wert vondesired_message_type
zurückgegeben. Wenn keine passende Nachricht existiert, blockiert diese Funktion solange, bis eine passende Nachricht verfügbar ist. Durch das Setzen des FlagsMSG_IPC_NOWAIT
im Parameterflags
kann 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_size
angegeben; 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 Parameterflags
gesetzt). -
message
-
Die empfangene Nachricht wird in
message
gespeichert, es sei denn es tritt ein Fehler beim Empfang auf. -
unserialize
-
Wenn dieser Wert auf
true
gesetzt 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
unserialize
false
ist, wird die Nachricht als binärsicherer String zurückgegeben. -
flags
-
Der optionale Parameter
flags
erlaubt 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_NOWAIT
Wenn kein Wert des übergebenen Typs desired_message_type
in der Warteschlange vorhanden ist, gibt die Funktion sofort zurück, statt zu warten. Die Funktion schlägt fehl und gibt den Integerwert entsprechend anMSG_ENOMSG
zurück.MSG_EXCEPT
Dieses Flag sorgt in Kombination mit einem desired_message_type
größer als 0 dafür, dass die Funktion die erste Nachricht zurück gbit, die nicht gleichdesired_message_type
ist.MSG_NOERROR
Wenn die Nachricht länger als max_message_size
ist, wird durch Setzen diese Flags die Nachricht aufmax_message_size
gekürzt, und die Funktion signalisiert keinen Fehler. -
error_code
-
Wenn die Funktion fehlschlägt, wird der optionale
error_code
auf 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