Start · Sprachen · PHP · Referenz · yaz_es

yaz_es

Funktion

Bereitet eine Extended-Service-Anfrage für eine YAZ-Verbindung vor, die beim nächsten <code>yaz_wait()</code>-Aufruf ausgeführt wird.

seit PHP 4.0.1 Kategorie: misc

Signatur

yaz_es(resource $id, string $type, array $args): void

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

Typ
void
Beschreibung
Die Funktion gibt keinen Wert zurück. Fehler bei der Ausführung des Extended Service werden erst nach 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 erfolgreich ausgeführt.

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);
}
?>
Datensatz erfolgreich aktualisiert.

// 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.