Start · Sprachen · PHP · Referenz · swoole_last_error

swoole_last_error

Funktion

Gibt den letzten Fehlercode der Swoole-Erweiterung als Integer zurück.

Kategorie: misc

Signatur

swoole_last_error(): int

Beschreibung

swoole_last_error() liefert den Fehlercode des zuletzt aufgetretenen Fehlers innerhalb der Swoole-Erweiterung. Ähnlich wie das C-Konzept von errno speichert Swoole intern einen Fehlercode, der bei asynchronen Operationen, Netzwerkfehlern oder anderen Swoole-spezifischen Problemen gesetzt wird.

Der zurückgegebene Integer-Wert entspricht einem der Swoole-eigenen Fehlercodes (z. B. SWOOLE_ERROR_*-Konstanten) oder einem POSIX-Fehlercode aus der Betriebssystemebene. Um eine menschenlesbare Fehlerbeschreibung zu erhalten, kann der Rückgabewert an swoole_strerror() übergeben werden.

Die Funktion ist besonders nützlich beim Debuggen von Swoole-Servern und -Clients, da asynchrone Fehler häufig nicht über PHP-Exceptions weitergegeben werden, sondern stattdessen einen internen Fehlercode setzen. Nach dem Aufruf einer fehlgeschlagenen Swoole-Operation sollte swoole_last_error() unmittelbar abgefragt werden, bevor weitere Operationen den Fehlercode überschreiben.

Gibt die Funktion 0 zurück, ist kein Fehler aufgetreten. Bei Werten ungleich 0 liegt ein Fehler vor, der entsprechend behandelt werden sollte.

Rückgabewert

Typ
int
Beschreibung
Gibt den letzten Swoole-Fehlercode als Integer zurück. 0 bedeutet, dass kein Fehler vorliegt. Jeder andere Wert repräsentiert einen spezifischen Fehlercode, der mit swoole_strerror() in eine lesbare Fehlermeldung umgewandelt werden kann.

Beispiele

Fehlercode nach fehlgeschlagener Verbindung abfragen

<?php
// Swoole-Client erstellen und absichtlich eine nicht erreichbare Adresse verbinden
$client = new Swoole\Client(SWOOLE_SOCK_TCP);

if (!$client->connect('127.0.0.1', 9999, 0.5)) {
    $errorCode = swoole_last_error();
    $errorMessage = swoole_strerror($errorCode);
    echo "Verbindung fehlgeschlagen." . PHP_EOL;
    echo "Fehlercode: " . $errorCode . PHP_EOL;
    echo "Fehlermeldung: " . $errorMessage . PHP_EOL;
}
Verbindung fehlgeschlagen. Fehlercode: 111 Fehlermeldung: Connection refused

Fehlerprüfung nach asynchroner Swoole-Operation

<?php
// Beispiel innerhalb eines Swoole-Coroutine-Kontexts
Swoole\Coroutine\run(function () {
    $client = new Swoole\Coroutine\Client(SWOOLE_SOCK_TCP);

    $result = $client->connect('192.0.2.1', 8080, 1.0); // Nicht erreichbare IP

    if ($result === false) {
        $code = swoole_last_error();
        if ($code !== 0) {
            echo "Swoole-Fehlercode: " . $code . PHP_EOL;
            echo "Beschreibung: " . swoole_strerror($code) . PHP_EOL;
        }
    } else {
        echo "Verbindung erfolgreich." . PHP_EOL;
    }
});
Swoole-Fehlercode: 110 Beschreibung: Connection timed out

// Wichtig · Fallstricke

Achtung: Der interne Fehlercode wird bei jeder neuen Swoole-Operation überschrieben. swoole_last_error() sollte daher unmittelbar nach einer fehlgeschlagenen Operation aufgerufen werden, um den korrekten Fehlercode zu erhalten.

swoole_last_error() ist eine Funktion der Swoole-Erweiterung und steht nur zur Verfügung, wenn diese installiert und aktiviert ist. Sie ist kein Bestandteil von PHP selbst. Die Fehlercodes können je nach Betriebssystem und Swoole-Version variieren.

Für PHP-seitige Fehler (nicht Swoole-spezifisch) sollte stattdessen error_get_last() verwendet werden.