Signatur
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
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;
}
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;
}
});
// 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.