Start · Sprachen · PHP · Referenz · yaz_errno

yaz_errno

Funktion

Gibt die Fehlernummer des letzten YAZ-Fehlers für eine gegebene Verbindungsressource zurück.

seit PHP 4.0.1 Kategorie: misc

Signatur

yaz_errno(resource $id): int

Beschreibung

yaz_errno() liefert den numerischen Fehlercode des zuletzt aufgetretenen Fehlers bei einer YAZ-Verbindung (Z39.50-Protokoll). Die Funktion wird typischerweise nach Operationen wie yaz_search(), yaz_present() oder yaz_wait() eingesetzt, um zu prüfen, ob ein Fehler aufgetreten ist.

Ein Rückgabewert von 0 bedeutet, dass kein Fehler vorliegt. Jeder andere Wert steht für einen spezifischen Fehlercode, der entweder aus dem Z39.50-Diagnosestandard (BIB-1-Diagnosen) oder aus der YAZ-eigenen Fehlerklassifizierung stammt. Mit yaz_error() lässt sich zur zurückgegebenen Fehlernummer eine lesbare Fehlermeldung abrufen.

Der Einsatz von yaz_errno() ist besonders dann sinnvoll, wenn mehrere Z39.50-Server parallel abgefragt werden und nach yaz_wait() für jede Verbindungsressource einzeln der Fehlerstatus ausgewertet werden soll. So lassen sich fehlgeschlagene Verbindungen gezielt behandeln, ohne den Gesamtablauf zu unterbrechen.

Parameter

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

Rückgabewert

Typ
int
Beschreibung
Gibt den numerischen Fehlercode des letzten Fehlers zurück. 0 bedeutet, dass kein Fehler aufgetreten ist. Positive Werte entsprechen Z39.50 BIB-1-Diagnosecodes oder YAZ-internen Fehlercodes.

Beispiele

Fehlerprüfung nach einer Z39.50-Suche

<?php
// Verbindung zu einem Z39.50-Server herstellen
$id = yaz_connect('z3950.example.com/VOYAGER');

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

// Alle laufenden Anfragen abwarten
yaz_wait();

// Fehler prüfen
$errno = yaz_errno($id);
if ($errno !== 0) {
    echo 'Fehler ' . $errno . ': ' . yaz_error($id) . PHP_EOL;
    echo 'Zusatzinfo: ' . yaz_addinfo($id) . PHP_EOL;
} else {
    $hits = yaz_hits($id);
    echo 'Treffer gefunden: ' . $hits . PHP_EOL;
}
?>
Treffer gefunden: 42

Mehrere Z39.50-Server parallel abfragen und Fehler auswerten

<?php
$server1 = yaz_connect('z3950.server1.example.com/DB1');
$server2 = yaz_connect('z3950.server2.example.com/DB2');

yaz_syntax($server1, 'usmarc');
yaz_syntax($server2, 'usmarc');

yaz_search($server1, 'rpn', '@attr 1=4 "Informatik"');
yaz_search($server2, 'rpn', '@attr 1=4 "Informatik"');

// Auf alle Server warten
yaz_wait();

foreach ([$server1, $server2] as $index => $id) {
    $errno = yaz_errno($id);
    if ($errno !== 0) {
        echo 'Server ' . ($index + 1) . ' meldet Fehler ' . $errno . ': ' . yaz_error($id) . PHP_EOL;
    } else {
        echo 'Server ' . ($index + 1) . ' Treffer: ' . yaz_hits($id) . PHP_EOL;
    }
}
?>
Server 1 Treffer: 15 Server 2 meldet Fehler 23: Present request out-of-range

// Wichtig · Fallstricke

Hinweis: Die YAZ-Erweiterung ist seit PHP 7.2 nicht mehr im offiziellen PECL-Repository aktiv gepflegt und gilt als veraltet. Für neue Projekte mit Z39.50-Anforderungen sollten Alternativen wie die YAZ-Bibliothek über externe Wrapper oder spezialisierte Bibliotheken genutzt werden.

Fehlercodes im Bereich von 1 bis 1000+ entsprechen in der Regel BIB-1-Diagnosen des Z39.50-Standards. Negative Fehlercodes oder Codes über 10000 sind häufig YAZ-spezifische, verbindungsseitige Fehler (z. B. Netzwerkprobleme). Zur genauen Interpretation empfiehlt sich immer die kombinierte Auswertung von yaz_errno(), yaz_error() und yaz_addinfo().