Aktueller Standort: Startseite> Neueste Artikel> Wie optimieren Sie die Funktion mySQLI_Result mit statischer Cache, um doppelte Datenbankabfragen zu vermeiden?

Wie optimieren Sie die Funktion mySQLI_Result mit statischer Cache, um doppelte Datenbankabfragen zu vermeiden?

M66 2025-06-15

Bei der Entwicklung von PHP -Anwendungen, insbesondere in Projekten, die Datenbankoperationen betreffen, ist es sehr wichtig, die Leistung von Datenbankabfragen zu optimieren. MySQLi_Result ist eine Funktion in PHP, um die Ergebnisse der MySQL -Abfrage zu verarbeiten, aber in einigen Fällen führen wir die gleiche Datenbankabfrage mehrmals aus, was zu unnötigen Leistungsverlusten führen kann. Um doppelte Abfragen zu vermeiden, können wir statische Caching -Techniken verwenden, um diese Abfragen zu optimieren. In diesem Artikel wird ein statischer Cache vorgestellt, um die Funktion mySQLI_Result zu optimieren, um den unnötigen Datenbankzugriff zu reduzieren.

1. Was ist statisches Caching?

Statischer Cache bezieht sich auf das Speichern der Abfrageergebnisse im Speicher des Servers. Wenn dieselbe Datenanforderung erneut erfolgt, werden Daten direkt aus dem Cache abgerufen, anstatt eine Datenbankabfrage erneut zu initiieren. Dieser Ansatz kann die Leistung erheblich verbessern, insbesondere wenn die Abfragen häufig sind und die Ergebnisse nicht häufig ändern.

2. Optimieren Sie MySQLI_Result mit statischer Cache

Angenommen, wir haben eine einfache MySQL -Abfrage:

 <?php
// Erstellen Sie eine Datenbankverbindung
$mysqli = new mysqli("localhost", "user", "password", "database");

// Fragen Sie die Datenbank ab
$query = "SELECT * FROM users WHERE id = 1";
$result = $mysqli->query($query);

// Prozessabfragenergebnisse
if ($result) {
    $row = $result->fetch_assoc();
    echo "User Name: " . $row['name'];
}
?>

In diesem Fall wird jedes Mal, wenn diese Abfrage ausgeführt wird, auf die Datenbank zugegriffen und die gleiche Abfrage ausgeführt. Um diesen Prozess zu optimieren, können wir die Ergebnisse nach der ersten Abfrage in einem Cache speichern und die Daten in nachfolgenden Anforderungen direkt aus dem Cache abrufen, anstatt die Datenbankabfrage erneut auszuführen.

3. Verwenden Sie statische Variablen als Cache

Es gibt eine einfache Möglichkeit, ein statisches Caching in PHP zu implementieren, bei dem statische Variablen verwendet werden. Statische Variablen behalten ihre Werte zwischen Funktionsaufrufen und können die Ergebnisse der Abfrage effektiv speichern. Hier erfahren Sie, wie Sie den obigen Code so ändern, dass der statische Cache verwendet wird:

 <?php
// Erstellen Sie eine Datenbankverbindung
$mysqli = new mysqli("localhost", "user", "password", "database");

// Definieren Sie eine statische Variable für Cache -Abfrageergebnisse
function getUserById($id) {
    static $cache = [];

    // Wenn sich die Abfragergebnisse des Benutzers bereits im Cache befinden,Geben Sie zwischengespeicherte Daten direkt zurück
    if (isset($cache[$id])) {
        return $cache[$id];
    }

    // Wenn es keinen Cache gibt,Datenbankabfrage durchführen
    global $mysqli;
    $query = "SELECT * FROM users WHERE id = ?";
    $stmt = $mysqli->prepare($query);
    $stmt->bind_param("i", $id);
    $stmt->execute();
    $result = $stmt->get_result();

    // Wenn die Abfrage erfolgreich ist,Speichern auf cache
    if ($result) {
        $row = $result->fetch_assoc();
        $cache[$id] = $row;  // Speichern auf cache
        return $row;
    }

    return null;
}

// Benutzer mit Cache abfragen
$user = getUserById(1);
if ($user) {
    echo "User Name: " . $user['name'];
}
?>

Im obigen Code verwendet die GetUserByID -Funktion eine statische Variable $ cache , um die Abfrageergebnisse zu speichern. Wenn ein Benutzer zum ersten Mal abgefragt wird, wird das Ergebnis im $ cache -Array gespeichert. Danach wird bei der erneuten Abfrage desselben Benutzers direkt aus $ cache abgerufen und nicht mehr auf die Datenbank zugegriffen.

4. Optimieren Sie mit der Cache -Bibliothek

Obwohl statische Variablen für einfache Caches sehr effektiv sind, wird empfohlen, eine dedizierte Cache -Bibliothek wie Redis oder Memcached für komplexe Anwendungen zu verwenden oder wenn Sie den Cache über mehrere Anforderungen hinweg weitergeben müssen. Diese Cache -Systeme können verteilte Cache, anhaltende Cache und leistungsfähigere Cache -Management -Funktionen bereitstellen.

Beispiel: Verwenden von Redis als Cache

 <?php
// erstellen Redis verbinden
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);

// Erstellen Sie eine Datenbankverbindung
$mysqli = new mysqli("localhost", "user", "password", "database");

function getUserById($id) {
    global $redis, $mysqli;

    // prüfen Redis Gibt es irgendwelche zwischengespeicherten Daten darin
    $cachedData = $redis->get("user_{$id}");
    if ($cachedData) {
        return unserialize($cachedData);  // Holen Sie sich Daten aus dem Cache
    }

    // Wenn es keinen Cache gibt,Datenbankabfrage durchführen
    $query = "SELECT * FROM users WHERE id = ?";
    $stmt = $mysqli->prepare($query);
    $stmt->bind_param("i", $id);
    $stmt->execute();
    $result = $stmt->get_result();

    // Wenn die Abfrage erfolgreich ist,Speichern Redis Cache
    if ($result) {
        $row = $result->fetch_assoc();
        $redis->set("user_{$id}", serialize($row), 3600);  // Cache1Stunde
        return $row;
    }

    return null;
}

// Benutzer mit Cache abfragen
$user = getUserById(1);
if ($user) {
    echo "User Name: " . $user['name'];
}
?>

Im obigen Code verwenden wir Redis als Cache -Speicher. Beim Abfragen der Datenbank wird das zwischengespeicherte Ergebnis direkt zurückgegeben, wenn zwischengespeicherte Daten in Redis vorhanden sind. Andernfalls wird die Datenbankabfrage ausgeführt und die Ergebnisse in Redis gespeichert.

5. Cache Invalidierung und Aktualisierung

Ein wichtiges Problem beim Caching ist das Cache -Fehler oder -Antüten. Wenn sich die Daten in der Datenbank ändert, müssen die Daten im Cache synchron aktualisiert oder gelöscht werden. Gemeinsame Strategien sind:

  • RECHUNGSPRÜFUNG Cache : Löschen Sie den Cache regelmäßig und formulieren Sie den Datenbank-Update-Cache erneut.

  • Aktualisieren Sie den Cache manuell : Wenn sich die Daten ändern, löschen Sie den entsprechenden Cache manuell oder aktualisieren Sie den Cache.

Zusammenfassen

Durch die Verwendung statischer Caches oder Cache -Bibliotheken wie Redis oder Memcached können wir eine wiederholte Ausführung von Datenbankabfragen effektiv vermeiden, wodurch die Leistung unserer Anwendung erheblich verbessert wird. Bei der Implementierung von Caching muss die Strategie für Cache -Fehler in Betracht gezogen werden, um die Genauigkeit und Konsistenz der Daten zu gewährleisten. Ich hoffe, dieser Artikel kann Ihnen helfen, besser zu verstehen, wie Sie die Datenbankabfrage der Funktion von MySQLI_Result optimieren können.