Signatur
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
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;
}
?>
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;
}
}
?>
// 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().