Heim > Artikel > Backend-Entwicklung > Ideen zur Implementierung des PHP-Datenbank-Cache
Dieser Artikel stellt hauptsächlich die Ideen zur PHP-Datenbank-Cache-Implementierung vor, die einen gewissen Referenzwert haben. Jetzt können Freunde in Not darauf zurückgreifen.
SQL-Abfrageergebnisse zwischenspeichern Warum Abfrageergebnisse zwischenspeichern? Das Zwischenspeichern von Abfrageergebnissen kann die Ausführungszeit des Skripts und den Ressourcenbedarf erheblich verbessern. Das Zwischenspeichern von SQL-Abfrageergebnissen ermöglicht Ihnen auch die Nachbearbeitung der Daten. Wenn Sie einen Dateicache verwenden, um die Ausgabe des gesamten Skripts (HTML-Ausgabe) zu speichern, funktioniert dies möglicherweise nicht. Wenn Sie eine SQL-Abfrage ausführen, ist der Diandian-Verarbeitungsprozess wie folgt: 437fcc348f7b1c54dc1b8f8cb5743cbcl -->Mit der Datenbank verbinden 437fcc348f7b1c54dc1b8f8cb5743cbcl 04c6c2c265887a55041405a81efec09aSQL-Abfrage vorbereiten 9604069c1fdc62cd1a79263373a07c37l 04c6c2c265887a55041405a81efec09aAbfrage an Datenbank senden 437fcc348f7b1c54dc1b8f8cb5743cbcl e3267085b763481f4c04d6df26a5dea8Rückgabeergebnis abrufen 437fcc348f7b1c54dc1b8f8cb5743cbcl 04c6c2c265887a55041405a81efec09aDatenbank schließen Die obige Methode zum Verbinden von ist sehr ressourcenintensiv und beeinträchtigt die Leistung des Skripts. Dies kann nur durch die beiden Faktoren des Erhaltens einer großen Menge zurückgegebener Daten und des Standorts des Datenbankservers koordiniert werden. Obwohl kontinuierliche Verbindungen die Auslastung beim Herstellen einer Verbindung zur Datenbank verbessern können, sind sie sehr speicherressourcenintensiv. Wenn eine große Datenmenge abgerufen wird, ist die gesamte Speicherzeit sehr kurz. Erstellen Sie eine SQL-Abfrage: SQL-Abfragen (Structured Query Language) werden als Schnittstelle zum Bearbeiten einer Datenbank und ihres Inhalts verwendet. SQL kann verwendet werden, um die Struktur einer Tabelle zu definieren und zu bearbeiten, Daten in die Tabelle einzufügen und Informationen in der Tabelle zu aktualisieren oder zu löschen. SQL ist eine Sprache, die zur Kommunikation mit Daten verwendet wird. In den meisten PHP-Datenbankerweiterungen (MySQL, ODBC, Oracle usw.) wird der gesamte Prozess durch die Weiterleitung von SQL-Abfragen an die Datenbank verwaltet. In diesem Tutorial wird nur die ausgewählte Sprache verwendet, um Daten in der Datenbank abzurufen. Diese Daten werden zwischengespeichert und später als Datenquelle verwendet. Entscheiden Sie, wann der Cache aktualisiert werden soll: Der Cache kann je nach den Anforderungen des Programms viele Formen annehmen. Die drei häufigsten Methoden sind: d6065f95f57cc8c795799cedededfd73l 437fcc348f7b1c54dc1b8f8cb5743cbc l > & lt;!-[if! Supportlisten]-& gt; l 🎜>Ihre Caching-Anforderungen können eine Kombination aus einem oder mehreren der oben genannten Prinzipien sein. In diesem Tutorial werden zeitauslösende Methoden erläutert. In einem umfassenden Caching-Mechanismus wird jedoch eine Kombination der drei Methoden verwendet. Caching-Ergebnisse:Grundlegendes Caching verwendet die beiden PHP-Funktionen serialize() und unserialize() (Anmerkung: Diese beiden Funktionen repräsentieren Serialisierung und Deserialisierung). Die Funktion serialize() wird zum Speichern von PHP-Werten verwendet, wodurch sichergestellt wird, dass Typ und Struktur dieser Werte nicht verloren gehen. Tatsächlich verwendet die Sitzungserweiterung von PHP serialisierte Variablen, um die Sitzungsvariable ($_SESSION) in einer Datei im System zu speichern. Die Funktion unserialize() führt das Gegenteil der oben genannten Operation aus und gibt die serialisierte Zeichenfolge auf ihre ursprüngliche Struktur und ihren ursprünglichen Dateninhalt zurück. Nehmen Sie in diesem Beispiel einen E-Commerce-Shop. Der Shop verfügt über zwei grundlegende Tabellen: Kategorien und Produkte (hier ist der ursprüngliche Datenbanktabellenname). Die Produkttabelle kann sich täglich ändern, die Kategorien bleiben jedoch statisch. Um Produkte anzuzeigen, können Sie ein Ausgabe-Cache-Skript verwenden, um die ausgegebenen HTML-Ergebnisse in einer Datei zu speichern. Die Kategorientabelle muss jedoch möglicherweise nachbearbeitet werden. Wenn beispielsweise alle Kategorien über die Variable „category_id“ (abgerufen über $_REQUEST['category_id']) angezeigt werden, möchten Sie möglicherweise die aktuell ausgewählte Kategorie hervorheben. Struktur der Tabellenkategorien FieldType KeyExtracategory_idcategory_namecategory_descriptionint(10) unsignedvarchar(255)textPRIauto_incremenIn diesem Beispiel wird die zeitgesteuerte Caching-Technologie verwendet, um die zwischengespeicherte SQL-Ausgabe so festzulegen, dass sie nach einer bestimmten Zeitspanne abläuft. In diesem speziellen Beispiel beträgt der Zeitraum 24 Stunden. Serialisierungsbeispiel: d6065f95f57cc8c795799cedededfd73l >437fcc348f7b1c54dc1b8f8cb5743cbcl dbe2c03495b4fb6333780cfaab47e0b0Abfrage ausführen 437fcc348f7b1c54dc1b8f8cb5743cbcl --[if !supportLists]-->l !--[endif]-->Serialisiertes Array in der Datei speichern [php]Klarkopie anzeigen $file = 'sql_cache.txt'; $link = mysql_connect('localhost','username','password') or die (mysql_error()); mysql_select_db('shop') or die (mysql_error()); /* 构造SQL查询 */ $query = "SELECT * FROM categories"; $result = mysql_query($query) or die (mysql_error()); while ($record = mysql_fetch_array($result) ) { $records[] = $record; } $OUTPUT = serialize($records); $fp = fopen($file,"w"); // 以写权限的方式打开文件 fputs($fp, $OUTPUT); fclose($fp); Sehen Sie sich die darin enthaltene Datei sql_cache.txt an. Der Inhalt könnte etwa so aussehen: a:1:{i: 0;a:6:{i:0;s:1:"1";s:11:"category_id";s:1 :"1";i:1;s:9:"Computer";s:13 :"category_name";s:9: "Computer" ;i:2;s:25:"Beschreibung für Computer";s:20:"category_description" ;s:25 :"Beschreibung für Computer";}} Diese Ausgabe ist die interne Darstellung ihrer Variablen und Typen. Angenommen, Sie verwenden die Funktion mysql_fetch_array(), um ein numerisch indiziertes Array und ein assoziatives Array zurückzugeben (deshalb sehen die Daten so aus, als ob sie zweimal vorkommen), eines mit dem numerischen Index und das andere mit dem String-Index. Caching verwenden:Um Caching zu verwenden, müssen Sie die Funktion unserialize() verwenden, um die Daten in ihrem ursprünglichen Format und Typ wiederherzustellen. Mit der Funktion file_get_contents() können Sie den Inhalt der Datei sql_cache.txt lesen und einer Variablen zuweisen. Bitte beachten Sie: Diese Funktion ist in PHP4.3.0 und höher gültig. Wenn Sie eine ältere Version von PHP verwenden, besteht eine einfache Methode darin, die Funktion file() zu verwenden (die gesamte Datei in ein Array einlesen, jede Zeile wird zu einem Array). Die Funktion implode() wird verwendet, um die Elemente des Arrays zu einem String zu verketten und ihn dann mit unserialize() zu deserialisieren. // file_get_contents() geeignet für PHP < 4.3.0 [php]Klarkopie anzeigen $file = 'sql_cache.txt'; $records = unserialize(implode('',file($file))); //现在你可以通过$records数组并且取得原始查询的数据: foreach ($records as $id=>$row) { print $row['category_name']."<br>"; } Beachten Sie, dass $records ein Array ist (Eine numerische Indexspalte, die die Ergebnisse der Abfrage enthält – jede Zeile ist eine Zeile aus einer Zahl und einer Zeichenfolge … was für ein Durcheinander). Fügen Sie sie zusammen:Entscheiden Sie anhand der Zeit in diesem Beispiel, ob zwischengespeichert werden soll. Wenn der Zeitstempel der Dateiänderung größer ist als der aktuelle Zeitstempel abzüglich des Ablaufzeitstempels, wird der Cache verwendet, andernfalls wird der Cache aktualisiert. & lt;!-[if! SupportLists]-& gt; l> & lt;!-[if! SupportLists]-& gt; l; 🎜> Zusätzliche andere Möglichkeiten:437fcc348f7b1c54dc1b8f8cb5743cbcl dbe2c03495b4fb6333780cfaab47e0b0Zwischengespeicherte Ergebnisse in Shared speichern Speicher für schnellere Geschwindigkeit 437fcc348f7b1c54dc1b8f8cb5743cbcl ]--> Fügen Sie eine Funktion hinzu, um SQL-Abfragen nach dem Zufallsprinzip auszuführen und zu überprüfen, ob die Ausgabe mit der zwischengespeicherten Ausgabe übereinstimmt. Wenn es inkonsistent ist, aktualisieren Sie den Cache (die Wahrscheinlichkeit, dass diese Funktion ausgeführt wird, kann auf 1/100 eingestellt werden). Hash-Algorithmen (z. B. MD5()) können dabei helfen, festzustellen, ob sich eine Zeichenfolge oder Datei geändert hat. 437fcc348f7b1c54dc1b8f8cb5743cbcl 04c6c2c265887a55041405a81efec09a Fügen Sie eine Administratorfunktion hinzu, um diese Cache-Datei manuell zu löschen, um ein Update-Caching zu erzwingen (z (z. B. wenn die Funktion file_exists() false zurückgibt). Sie können Dateien mit der Funktion unlink() löschen. Skript:[php] Klartext anzeigen $file = 'sql_cache.txt'; $expire = 86400; // 24 小时 (单位:秒) if (file_exists($file) && filemtime($file) > (time() - $expire)) { // 取得缓存中的记录 $records = unserialize(file_get_contents($file)); } else { // 通过 serialize() 函数创建缓存 }
|
Das obige ist der detaillierte Inhalt vonIdeen zur Implementierung des PHP-Datenbank-Cache. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!