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