Signatur
Beschreibung
swoole_clear_error() setzt den internen Fehlerzustand der Swoole-Erweiterung zurück. Dies umfasst sowohl den Socket-spezifischen Fehlercode als auch den allgemeinen letzten Fehlercode, der über swoole_last_error() abgerufen werden kann.
Die Funktion ist nützlich, wenn in einer langen Coroutine-Schleife oder nach einer Fehlerbehandlung sichergestellt werden soll, dass ein veralteter Fehlerzustand nicht irrtümlich als aktueller Fehler interpretiert wird. Ohne explizites Zurücksetzen könnten Folgefehlerprüfungen auf einen alten, bereits behandelten Fehlerzustand reagieren.
Typischerweise wird swoole_clear_error() direkt nach dem Behandeln eines Fehlers aufgerufen, bevor eine weitere I/O-Operation oder ein neuer Verbindungsversuch gestartet wird, um eine saubere Fehlerzustandsbasis zu gewährleisten.
Rückgabewert
Beispiele
Fehlerzustand nach fehlgeschlagenem Verbindungsversuch zurücksetzen
<?php
// Swoole Coroutine-Kontext vorausgesetzt
Co\run(function () {
$client = new Swoole\Coroutine\Client(SWOOLE_SOCK_TCP);
// Absichtlich eine nicht erreichbare Adresse verwenden
$result = $client->connect('192.0.2.1', 9999, 0.5);
if (!$result) {
$errorCode = swoole_last_error();
echo 'Verbindungsfehler: ' . $errorCode . PHP_EOL;
// Fehlerzustand bereinigen, bevor weitere Versuche unternommen werden
swoole_clear_error();
echo 'Fehlerzustand nach clear_error: ' . swoole_last_error() . PHP_EOL;
}
});
Fehlerzustand in einer Wiederholungsschleife zurücksetzen
<?php
Co\run(function () {
$maxRetries = 3;
for ($i = 0; $i < $maxRetries; $i++) {
$client = new Swoole\Coroutine\Client(SWOOLE_SOCK_TCP);
$result = $client->connect('127.0.0.1', 9501, 1.0);
if ($result) {
echo 'Verbindung erfolgreich im Versuch ' . ($i + 1) . PHP_EOL;
break;
}
echo 'Versuch ' . ($i + 1) . ' fehlgeschlagen. Fehlercode: ' . swoole_last_error() . PHP_EOL;
// Fehlerzustand bereinigen, damit der nächste Schleifendurchlauf
// auf einem sauberen Zustand aufbauen kann
swoole_clear_error();
Co::sleep(0.5);
}
});
// Wichtig · Fallstricke
Swoole-spezifisch: Diese Funktion steht nur zur Verfügung, wenn die Swoole-PHP-Erweiterung installiert und geladen ist. Sie ist kein Bestandteil von PHP selbst.
Das Vergessen von swoole_clear_error() in Wiederholungsschleifen oder Fehlerbehandlungsroutinen kann dazu führen, dass Prüfungen mit swoole_last_error() fälschlicherweise einen bereits behandelten Fehler melden und damit die Programmlogik verfälschen.