Signatur
Beschreibung
yaz_es() ist Teil der YAZ-Erweiterung für PHP, die das Z39.50-Protokoll implementiert – ein Standardprotokoll für den Austausch von bibliografischen Informationen zwischen Informationssystemen. Die Funktion bereitet eine sogenannte Extended Service-Anfrage (ES-Anfrage) für eine gegebene YAZ-Verbindung vor.
Extended Services sind ein Mechanismus im Z39.50-Protokoll, mit dem Clients erweiterte Operationen auf einem Server anfordern können, die über die Standard-Suchfunktionalität hinausgehen. Typische Anwendungsfälle sind das Anlegen oder Aktualisieren von Datensätzen, das Abonnieren von Benachrichtigungen oder das Ausführen administrativer Aufgaben auf dem Server.
Wichtig: yaz_es() sendet die Anfrage nicht sofort, sondern registriert sie lediglich. Die eigentliche Übertragung erfolgt erst, wenn yaz_wait() aufgerufen wird, das alle ausstehenden Anfragen aller registrierten YAZ-Verbindungen gleichzeitig abarbeitet. Das Ergebnis der Anfrage lässt sich anschließend mit yaz_error() und yaz_addinfo() prüfen.
Der Parameter $type bestimmt die Art des Extended Service, zum Beispiel 'itemorder' für Bestellungen oder 'update' für Datenbankaktualisierungen. Das Array $args enthält die spezifischen Parameter für den jeweiligen Service-Typ.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $id Pflicht | resource | Die YAZ-Verbindungsressource, die zuvor mit yaz_connect() erzeugt wurde. |
|
| $type Pflicht | string | Der Typ des Extended Service. Typische Werte sind 'itemorder' (Fernleihbestellung), 'update' (Datenbankaktualisierung) oder 'packagename'. Der genaue Wert ist abhängig von den Fähigkeiten des Z39.50-Servers. |
|
| $args Pflicht | array | Ein assoziatives Array mit den Parametern für den Extended Service. Die erlaubten Schlüssel und Werte sind abhängig vom gewählten $type. Für 'itemorder' beispielsweise enthält es bibliografische Informationen und Bestelldetails. |
Rückgabewert
yaz_wait() über yaz_error() und yaz_addinfo() sichtbar.Beispiele
Extended-Service-Anfrage vom Typ 'itemorder' vorbereiten
<?php
// Verbindung zu einem Z39.50-Server aufbauen
$conn = yaz_connect('z3950.example.com:210/MYDB');
if ($conn) {
// Extended Service 'itemorder' vorbereiten
yaz_es($conn, 'itemorder', [
'contact-name' => 'Max Mustermann',
'contact-phone' => '+49 30 12345678',
'contact-email' => 'max@example.com',
'itemorder' => [
'item' => '0-12345-678-9'
]
]);
// Alle ausstehenden Anfragen absenden
yaz_wait();
// Fehler prüfen
$error = yaz_error($conn);
if ($error) {
echo 'Fehler: ' . $error . ' – ' . yaz_addinfo($conn);
} else {
echo 'Extended Service erfolgreich ausgeführt.';
}
yaz_close($conn);
}
?>
Extended-Service-Anfrage vom Typ 'update' für Datenbankaktualisierung
<?php
$conn = yaz_connect('z3950.example.com:210/MYDB');
if ($conn) {
// Extended Service 'update' vorbereiten
yaz_es($conn, 'update', [
'action' => 'specialUpdate',
'syntax' => 'usmarc',
'record' => "00048cam 2200025 45000010008000000010005\n"
]);
yaz_wait();
$error = yaz_error($conn);
if ($error) {
echo 'Fehler bei Update: ' . $error;
} else {
echo 'Datensatz erfolgreich aktualisiert.';
}
yaz_close($conn);
}
?>
// Wichtig · Fallstricke
Deprecation-Hinweis: Die YAZ-Erweiterung (ext/yaz) ist seit PHP 7.0 nicht mehr im offiziellen PHP-Kern enthalten und gilt als veraltet. Für neue Projekte sollten modernere Alternativen wie das YAZ-Toolkit über externe Bibliotheken oder REST-APIs genutzt werden.
Asynchrones Verhalten: yaz_es() sendet die Anfrage nicht sofort – sie wird erst durch den Aufruf von yaz_wait() tatsächlich übermittelt. Vergisst man yaz_wait(), wird die Anfrage nie ausgeführt.
Serverkompatibilität: Nicht alle Z39.50-Server unterstützen Extended Services. Vor dem Einsatz sollte geprüft werden, welche Services der Zielserver anbietet. Eine fehlende Unterstützung führt in der Regel zu einem Fehler, der über yaz_error() abgerufen werden kann.