Signatur
Beschreibung
stomp_close() ist die prozedurale Variante zum Schließen einer mit stomp_connect() geöffneten Verbindung zu einem Stomp-kompatiblen Nachrichtenbroker (z. B. Apache ActiveMQ oder RabbitMQ). Die Funktion gibt alle intern gehaltenen Ressourcen frei und beendet die TCP-Verbindung zum Broker sauber.
Das explizite Schließen der Verbindung ist eine gute Praxis, da Verbindungen zu Nachrichtenbrokern typischerweise begrenzte serverseitige Ressourcen belegen. Wird die Verbindung nicht geschlossen, wird sie beim Beenden des PHP-Skripts automatisch freigegeben – ein expliziter Aufruf ist jedoch empfehlenswert, insbesondere bei langlebigen Prozessen oder wenn viele Verbindungen hintereinander geöffnet werden.
Die objektorientierte Alternative zu dieser Funktion ist Stomp::disconnect().
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $link Pflicht | resource | Eine Stomp-Verbindungsressource, wie sie von stomp_connect() zurückgegeben wurde. |
Rückgabewert
true bei Erfolg zurück, false bei einem Fehler (z. B. wenn die übergebene Ressource ungültig ist).Beispiele
Verbindung öffnen und sauber schließen
<?php
// Verbindung zu einem lokalen ActiveMQ-Broker herstellen
$link = stomp_connect('tcp://localhost:61613');
if (!$link) {
die('Verbindung fehlgeschlagen: ' . stomp_connect_error());
}
echo "Verbindung hergestellt.\n";
// Nachricht senden
stomp_send($link, '/queue/test', 'Hallo Welt');
// Verbindung sauber schließen
if (stomp_close($link)) {
echo "Verbindung erfolgreich geschlossen.\n";
} else {
echo "Fehler beim Schließen der Verbindung.\n";
}
Verbindung in einem try-finally-Block schließen
<?php
$link = stomp_connect('tcp://localhost:61613');
if (!$link) {
die('Verbindung fehlgeschlagen: ' . stomp_connect_error());
}
try {
// Nachricht aus einer Queue empfangen
stomp_subscribe($link, '/queue/test');
if (stomp_has_frame($link)) {
$frame = stomp_read_frame($link);
echo "Empfangen: " . $frame['body'] . "\n";
} else {
echo "Keine Nachricht verfügbar.\n";
}
} finally {
// Verbindung in jedem Fall schließen
stomp_close($link);
echo "Verbindung geschlossen.\n";
}
// Wichtig · Fallstricke
PECL-Erweiterung: stomp_close() ist Teil der PECL-Stomp-Erweiterung, die separat installiert werden muss. Sie ist nicht im PHP-Kern enthalten.
Deprecation: Die prozedurale API der Stomp-Erweiterung gilt als veraltet. Es wird empfohlen, die objektorientierte Klasse Stomp mit der Methode Stomp::disconnect() zu verwenden.
Nach dem Aufruf von stomp_close() sollte die Verbindungsressource nicht mehr verwendet werden, da weitere Operationen auf ihr zu Fehlern führen.