Start · Sprachen · PHP · Referenz · stomp_close

stomp_close

Funktion

Schließt eine bestehende Stomp-Verbindung und gibt die zugehörigen Ressourcen frei.

seit PHP 0.1.0 Kategorie: misc

Signatur

stomp_close(resource $link): bool

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

Typ
bool
Beschreibung
Gibt 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 hergestellt. Verbindung erfolgreich geschlossen.

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";
}
Keine Nachricht verfügbar. Verbindung geschlossen.

// 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.