Signatur
Beschreibung
stomp_error() ist die prozedurale Variante der Methode Stomp::error() und gibt den Fehlertext zurück, der beim letzten fehlgeschlagenen Stomp-Operationsaufruf auf der angegebenen Verbindung aufgezeichnet wurde. Die Funktion gehört zur Stomp-PECL-Erweiterung, die die Kommunikation mit Message-Brokern wie ActiveMQ oder RabbitMQ über das STOMP-Protokoll ermöglicht.
Die Funktion ist besonders nützlich zur Fehlerdiagnose nach Operationen wie stomp_send(), stomp_subscribe() oder stomp_read_frame(), wenn diese false zurückgeben. Anstatt eine Exception zu werfen, speichert die Stomp-Erweiterung intern die letzte Fehlermeldung, die dann über stomp_error() abgerufen werden kann.
Liefert die Funktion eine leere Zeichenkette zurück, ist kein Fehler aufgetreten oder der interne Fehlerpuffer wurde zurückgesetzt. Es empfiehlt sich, den Rückgabewert nach jedem kritischen Stomp-Aufruf zu prüfen, um Verbindungs- und Protokollfehler frühzeitig zu erkennen und zu behandeln.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $link Pflicht | resource | Eine aktive Stomp-Verbindungsressource, die zuvor mit stomp_connect() erstellt wurde. |
Rückgabewert
Beispiele
Fehlerbehandlung nach einem fehlgeschlagenen Stomp-Aufruf
<?php
// Verbindung zum Stomp-Broker herstellen
$link = stomp_connect('tcp://localhost:61613');
if (!$link) {
die('Verbindung fehlgeschlagen: ' . stomp_connect_error());
}
// Versuch, eine Nachricht zu senden
$result = stomp_send($link, '/queue/test', 'Hallo Welt');
if (!$result) {
$error = stomp_error($link);
echo 'Fehler beim Senden: ' . $error . PHP_EOL;
} else {
echo 'Nachricht erfolgreich gesendet.' . PHP_EOL;
}
stomp_close($link);
Fehlerprüfung nach dem Abonnieren einer Queue
<?php
$link = stomp_connect('tcp://localhost:61613');
if (!$link) {
die('Verbindung fehlgeschlagen.');
}
// Versuch, eine nicht existierende oder gesperrte Queue zu abonnieren
$subscribed = stomp_subscribe($link, '/queue/gesperrte-queue', ['ack' => 'client']);
if (!$subscribed) {
$fehlermeldung = stomp_error($link);
if ($fehlermeldung !== '') {
echo 'Abonnement fehlgeschlagen. Stomp-Fehler: ' . $fehlermeldung . PHP_EOL;
} else {
echo 'Abonnement fehlgeschlagen, kein spezifischer Fehler gespeichert.' . PHP_EOL;
}
} else {
echo 'Queue erfolgreich abonniert.' . PHP_EOL;
}
stomp_close($link);
// Wichtig · Fallstricke
Hinweis zur Erweiterung: Die Stomp-PECL-Erweiterung wird seit Jahren kaum noch aktiv gepflegt. Für neue Projekte empfiehlt es sich, auf alternative Bibliotheken wie stomp-php (Composer-Paket) oder AMQP-Bibliotheken zurückzugreifen, die aktiver gewartet werden.
Fehlerpuffer: Der interne Fehlerpuffer wird nicht automatisch nach jedem Aufruf geleert. Es ist daher möglich, dass stomp_error() einen Fehler aus einem früheren Aufruf zurückgibt, wenn seitdem keine neue Stomp-Operation durchgeführt wurde. Prüfen Sie den Fehler stets direkt nach dem verdächtigen Aufruf.
Objektorientierten Stil bevorzugen: Bei Verwendung der objektorientierten Schnittstelle steht die äquivalente Methode Stomp::error() zur Verfügung.