Start · Sprachen · PHP · Referenz · yaz_close

yaz_close

Funktion

Schließt eine zuvor geöffnete YAZ-Verbindung (Z39.50-Verbindung) und gibt die zugehörigen Ressourcen frei.

seit PHP 4.0.1 Kategorie: misc

Signatur

yaz_close(resource $id): bool

Beschreibung

yaz_close() beendet eine mit yaz_connect() oder yaz_open() geöffnete Verbindung zu einem Z39.50-Server und gibt alle damit verbundenen Ressourcen frei. Die Funktion sollte immer aufgerufen werden, wenn eine Verbindung nicht mehr benötigt wird, um Ressourcenlecks zu vermeiden.

Z39.50 ist ein Netzwerkprotokoll, das vor allem für die Kommunikation zwischen Bibliothekssystemen und Informationsdatenbanken eingesetzt wird. Das PHP-YAZ-Modul (Yet Another Z39.50) bietet eine Schnittstelle zu diesem Protokoll über die freie YAZ-Bibliothek.

Nach dem Aufruf von yaz_close() ist das übergebene Ressource-Handle ungültig und darf nicht mehr für weitere YAZ-Operationen verwendet werden. Asynchrone Verbindungen (yaz_wait()) sollten vor dem Schließen abgeschlossen worden sein, um Datenverlust zu vermeiden.

Das YAZ-Modul (PECL yaz) ist seit PHP 7 nicht mehr im Core enthalten und gilt als veraltet. Neue Projekte sollten auf modernere Alternativen zurückgreifen.

Parameter

Name Typ Default Beschreibung
$id Pflicht resource Die YAZ-Verbindungsressource, die von yaz_connect() zurückgegeben wurde und nun geschlossen werden soll.

Rückgabewert

Typ
bool
Beschreibung
Gibt true bei Erfolg zurück. Im Fehlerfall (z. B. ungültige Ressource) wird false zurückgegeben.

Beispiele

Einfache YAZ-Verbindung öffnen und schließen

<?php
// Verbindung zu einem Z39.50-Server herstellen
$id = yaz_connect('z3950.loc.gov:7090/Voyager');

if ($id === false) {
    echo "Verbindung konnte nicht hergestellt werden.";
    exit;
}

// Suche konfigurieren
yaz_syntax($id, 'usmarc');
yaz_search($id, 'rpn', '@attr 1=4 "science"');

// Suche asynchron ausführen
yaz_wait();

// Ergebnisse verarbeiten
$error = yaz_error($id);
if ($error) {
    echo "Fehler: " . $error;
} else {
    $hits = yaz_hits($id);
    echo "Treffer: " . $hits . "\n";
}

// Verbindung sauber schließen
yaz_close($id);
echo "Verbindung geschlossen.\n";
?>
Treffer: 42 Verbindung geschlossen.

Mehrere Verbindungen öffnen und alle schließen

<?php
$server1 = yaz_connect('z3950.loc.gov:7090/Voyager');
$server2 = yaz_connect('z3950.dnb.de:210/DN');

$connections = [$server1, $server2];

// ... Suchanfragen durchführen ...

// Alle Verbindungen schließen
foreach ($connections as $conn) {
    if ($conn !== false) {
        yaz_close($conn);
    }
}

echo "Alle Verbindungen geschlossen.\n";
?>
Alle Verbindungen geschlossen.

// Wichtig · Fallstricke

Veraltet: Das PECL-Modul yaz wird seit PHP 7 nicht mehr aktiv gepflegt und ist für aktuelle PHP-Versionen möglicherweise nicht verfügbar. Es wird empfohlen, auf modernere Z39.50-Bibliotheken oder alternative Protokolle (z. B. SRU/SRW) zu setzen.

Ressourcen: Nicht geschlossene YAZ-Verbindungen werden zwar beim Skriptende automatisch freigegeben, dennoch ist ein expliziter Aufruf von yaz_close() bei lang laufenden Skripten oder bei Verbindungen, die früh im Skript nicht mehr benötigt werden, dringend empfohlen, um Ressourcen sofort freizugeben.

Asynchroner Modus: Bei Verwendung von yaz_connect() mit aktiviertem asynchronem Modus (async = 1) sollte yaz_wait() vor yaz_close() aufgerufen werden, um sicherzustellen, dass alle ausstehenden Operationen abgeschlossen sind.