Aktueller Standort: Startseite> Neueste Artikel> So erstellen Sie $ errno-basierte Fehler-Wiederholungslogik

So erstellen Sie $ errno-basierte Fehler-Wiederholungslogik

M66 2025-05-17

Die Stabilität von Datenbankoperationen ist bei der Entwicklung von PHP -Anwendungen von entscheidender Bedeutung. Insbesondere für hochrangige Anwendungen, die mit Datenbankverbindungsfehlern oder Abfragemistern umgehen und einen effizienten Fehlermechanismus implementieren, ist ein Problem für viele Entwickler geworden. In diesem Artikel werden wir untersuchen, wie Sie MySQLI :: $ errno verwenden, um eine effiziente Fehlerlogik zu implementieren, um die Stabilität von Datenbankvorgängen zu verbessern.

Was ist MySQLI :: $ errno ?

In der MySQLI -Erweiterung von PHP speichert das $ errno -Attribut den Fehlercode der letzten MySQL -Operation. Wenn wir Datenbankvorgänge ausführen, gibt MySQL einen Fehlercode zurück, und dieser Fehlercode kann über die Eigenschaft von MySQLI :: $ errno erhalten werden. Abhängig vom Fehlercode können wir entscheiden, ob wir wiederholen sollen.

Fehler beim Wiederholen von Szenarien

Häufige Fehler in Datenbankoperationen umfassen:

  • Temporärer Netzwerkausfall

  • Die Anzahl der Datenbankverbindungen erreicht die Obergrenze

  • Der MySQL -Service ist vorübergehend nicht verfügbar usw.

Diese Fehler sind in der Regel nur vorübergehend und wir können die Stabilität der Anwendung durch geeignete Wiederholungsstrategien verbessern. Wenn Sie den Fehlertyp schnell festlegen und zum richtigen Zeitpunkt erneut wiederholen können, kann dies die Wahrscheinlichkeit eines Datenbankbetriebsausfalls durch gelegentliche Fehler erheblich verringern.

Erstellen Sie die Fehlerlogik erneut

Als nächstes werden wir eine Fehlerlogik implementieren, die auf MySQLI :: $ errno mit einem Beispiel basiert. Wir werden versuchen, eine Verbindung zur Datenbank herzustellen und es erneut zu versuchen, wenn die Verbindung fehlschlägt.

 <?php
// Stellen Sie die Datenbankverbindungsparameter fest
$host = 'localhost';
$username = 'root';
$password = '';
$database = 'test_db';

// Stellen Sie die maximale Anzahl von Wiederholungszeiten ein
$maxRetries = 3;
$retryInterval = 2; // Intervallzeit wiederholen(Zweite)

// Erstellen Sie eine Datenbankverbindung
function createConnection($host, $username, $password, $database) {
    $connection = new mysqli($host, $username, $password, $database);
    
    // Überprüfen Sie, ob die Verbindung erfolgreich ist
    if ($connection->connect_error) {
        echo "Verbindung ist fehlgeschlagen: " . $connection->connect_error . "\n";
        return false;
    }
    return $connection;
}

// Versuchen Sie es miteinander aus und versuchen Sie es erneut
function tryConnection($host, $username, $password, $database, $maxRetries, $retryInterval) {
    $retries = 0;
    $connection = null;
    
    while ($retries < $maxRetries) {
        $connection = createConnection($host, $username, $password, $database);
        if ($connection) {
            // Verbindung erfolgreich,Kehren Sie zum Verbindungsobjekt zurück
            return $connection;
        }
        
        // Holen Sie sich den Fehlercode
        $errno = $connection->connect_errno;
        
        // Bestimmen Sie, ob es sich um einen temporären Fehler basiert, der auf dem Fehlercode basiert
        if ($errno == 2002 || $errno == 1040) {
            // Zum Beispiel:2002Gibt an, dass der Datenbankserver nicht angeschlossen werden kann,1040Zeigt an, dass es zu viele Datenbankverbindungen gibt
            echo "数据库Verbindung ist fehlgeschlagen,Wieder versuchen...(Fehlercode:$errno)\n";
            $retries++;
            sleep($retryInterval); // Warten Sie eine Weile, bevor Sie es erneut versuchen
        } else {
            // Wenn der Fehler ein anderer Typ ist,Wiederholung beenden
            echo "Verbindung ist fehlgeschlagen,Fehlercode:$errno\n";
            break;
        }
    }
    
    if ($retries == $maxRetries) {
        echo "Maximale Anzahl der Returns erreicht,Es kann keine Verbindung zur Datenbank hergestellt werden。\n";
        return null;
    }
    
    return $connection;
}

// Rufen Sie die Wiederholungsfunktion auf
$connection = tryConnection($host, $username, $password, $database, $maxRetries, $retryInterval);
if ($connection) {
    echo "数据库Verbindung erfolgreich!\n";
    // Führen Sie andere Datenbankvorgänge aus...
} else {
    echo "Es kann keine Verbindung zur Datenbank hergestellt werden,Bitte versuchen Sie es später erneut。\n";
}
?>

Erklären Sie den Code

  1. Verbindungsfunktion createConnection () : Diese Funktion wird verwendet, um eine MySQL -Datenbankverbindung zu erstellen und das Verbindungsobjekt zurückzugeben. Wenn die Verbindung fehlschlägt, wird False zurückgegeben.

  2. Wiederholungsfunktion TryConnection () : In dieser Funktion implementieren wir den Wiederholungsmechanismus. Es wird versucht, eine Verbindung zur Datenbank herzustellen, und wenn die Verbindung fehlschlägt, entscheidet sie, ob auf dem Fehlercode erneut teilnehmen soll. Wir verwenden Connect_errno , um den Fehlercode abzurufen und zu prüfen, ob es sich um einen temporären Verbindungsfehler handelt (z. B. Netzwerkprobleme, zu viele Datenbankverbindungen usw.). In diesem Fall warten wir eine Weile, bevor wir es erneut versuchen, bis die maximale Anzahl von Wiederholungen erreicht ist.

  3. Urteil des Fehlercode :

    • Der Fehlercode 2002 gibt an, dass der Datenbankserver nicht angeschlossen werden kann.

    • Der Fehlercode 1040 gibt an, dass zu viele Datenbankverbindungen vorhanden sind.

Weitere Optimierung

Wir können durch mehr Fehlercodes Urteile fällen, um intelligenteren Entscheidungen über unterschiedliche Fehler zu treffen. Zum Beispiel:

  • Fehlercode 2003 : Zeigt an, dass die Verbindung zum MySQL -Server nicht zugänglich ist oder der Server nicht gestartet wird.

  • Fehlercode 1045 : Gibt an, dass der Benutzername oder das Kennwort falsch ist. Dies ist ein expliziter Konfigurationsfehler und sollte nicht wiederholt werden.

Für jeden Fehlercode können wir ein anderes Wiederholungsintervall festlegen oder den Wiederholung direkt beenden.

Zusammenfassen

Durch die Verwendung von MySQLI :: $ errno , um den Fehlertyp in der Datenbankoperation zu bestimmen, können wir einen effizienten Fehlermechanismus implementieren, um Datenbankverbindungsfehler zu vermeiden, die durch Netzwerkunterbrechungen oder temporäre Fehler verursacht werden. Ein vernünftiges Festlegen der maximalen Anzahl von Wiederholungszeiten und Wiederholungsintervall kann die Stabilität von Datenbankoperationen effektiv verbessern, insbesondere in hohen Parallelitätsumgebungen. Mit diesen Fähigkeiten können Sie die Interaktion zwischen der Anwendung und der Datenbank besser steuern und die Zuverlässigkeit des Systems sicherstellen.