Start · Sprachen · PHP · Referenz · eio_get_last_error

eio_get_last_error

Funktion

Gibt eine menschenlesbare Fehlerbeschreibung zur letzten <code>eio</code>-Request-Ressource zurück.

seit PHP 0.0.1dev Kategorie: io

Signatur

eio_get_last_error(resource $req): string

Beschreibung

eio_get_last_error() liefert einen beschreibenden Fehlertext für die zuletzt ausgeführte asynchrone I/O-Anfrage, die über die eio-Erweiterung initiiert wurde. Die Funktion ist nützlich, um innerhalb von Callback-Funktionen den genauen Fehlergrund zu ermitteln, wenn eine asynchrone Operation fehlgeschlagen ist.

Typischerweise wird eio_get_last_error() im Callback einer eio_*-Funktion (z. B. eio_open(), eio_read(), eio_write()) aufgerufen, wenn der Rückgabewert des Requests auf einen Fehler hinweist (z. B. $result === -1). Der zurückgegebene String entspricht der Systembeschreibung des POSIX-Fehlercodes.

Die eio-Erweiterung ermöglicht nicht blockierende I/O-Operationen auf Basis der libeio-Bibliothek. Da Operationen asynchron ablaufen, ist eio_get_last_error() der empfohlene Weg, Fehlerinformationen im Callback-Kontext abzurufen, anstatt sich auf globale Fehlervariablen zu verlassen.

Parameter

Name Typ Default Beschreibung
$req Pflicht resource Die eio-Request-Ressource, wie sie dem Callback der jeweiligen eio_*-Funktion übergeben wird. Dieser Wert entspricht dem $req-Parameter im Callback.

Rückgabewert

Typ
string
Beschreibung
Gibt einen menschenlesbaren Fehlertext (z. B. "No such file or directory") zurück. Wenn kein Fehler aufgetreten ist, wird ein leerer String oder eine entsprechende Erfolgsmeldung zurückgegeben.

Beispiele

Fehlerbehandlung beim asynchronen Öffnen einer Datei

<?php
// eio-Event-Loop-Integration (z. B. mit libevent oder manuell)
eio_open(
    '/pfad/zur/nicht/vorhandenen/datei.txt',
    EIO_O_RDONLY,
    0,
    EIO_PRI_DEFAULT,
    function ($data, $result, $req) {
        if ($result === -1) {
            // Fehler aufgetreten – Fehlerbeschreibung abrufen
            $errorMsg = eio_get_last_error($req);
            echo "Fehler beim Öffnen der Datei: " . $errorMsg . PHP_EOL;
        } else {
            echo "Datei erfolgreich geöffnet, Dateideskriptor: " . $result . PHP_EOL;
            eio_close($result);
        }
    }
);

eio_event_loop();
?>
Fehler beim Öffnen der Datei: No such file or directory

Fehlerbehandlung beim asynchronen Lesen einer Datei

<?php
eio_open(
    '/tmp/testdatei.txt',
    EIO_O_RDONLY,
    0,
    EIO_PRI_DEFAULT,
    function ($data, $result, $req) {
        if ($result === -1) {
            echo "Öffnen fehlgeschlagen: " . eio_get_last_error($req) . PHP_EOL;
            return;
        }

        $fd = $result;
        eio_read(
            $fd,
            256,
            0,
            EIO_PRI_DEFAULT,
            function ($data, $result, $req) use ($fd) {
                if ($result === -1) {
                    echo "Lesen fehlgeschlagen: " . eio_get_last_error($req) . PHP_EOL;
                } else {
                    echo "Gelesener Inhalt: " . $result . PHP_EOL;
                }
                eio_close($fd);
            }
        );
    }
);

eio_event_loop();
?>

// Wichtig · Fallstricke

Verfügbarkeit: eio_get_last_error() steht nur zur Verfügung, wenn die eio-PECL-Erweiterung installiert und aktiviert ist. Diese ist nicht Teil der PHP-Standarddistribution und muss separat über PECL installiert werden.

Callback-Kontext: Die Funktion sollte ausschließlich innerhalb des Callbacks der jeweiligen eio_*-Anfrage verwendet werden, da die Request-Ressource nur dort gültig ist. Ein Aufruf außerhalb des Callbacks kann zu undefinierten Ergebnissen führen.

Fehlerprüfung: Überprüfe zunächst den $result-Parameter im Callback auf -1, bevor du eio_get_last_error() aufrufst, um sicherzustellen, dass tatsächlich ein Fehler aufgetreten ist.