Signatur
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
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";
?>
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";
?>
// 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.