StartTutorialsProgrammierungMinimales Cache-System in PHP

Minimales Cache-System in PHP

  • 7 Monaten her
  • 2Minuten

Trotz WordPress, Joomla und Konsorten kann es passieren, dass man seine eigene Webengine braucht. Um beispielsweise Userverhalten auszuwerten, sind hier Statistiken eine feine Sache. Doch das Laden solcher Seiten kann nervtötend sein.

Das Thema „Caching“ ist in der Webentwicklung ein riesiges Gebiet. Vorrangig werden hierbei Daten, die noch aktuell sind, zwischengespeichert und ausgegeben. Das hat u. A. den Vorteil, dass man nicht jedes mal die Datenbank mit Millionen von Abfragen belästigen muss.

Bei einem aktuellen Projekt hatte ich genau das Problem. Ich erstellte in der Administration eine Statistik-Seite. Hierbei wurden nicht nur Tabellen erzeugt und Daten ausgewertet, teilweise wurden diese auch als Grafiken ausgegeben. Das heißt, dass PHP die Diagramme in dem Moment erzeugt, in dem die Daten abgerufen werden. Bei einem geringen Datensatz und wenigen Grafiken ist das zu verschmerzen, aber irgendwann geht es in den Bereich von Sekunden – und dann nervt es.

Eine kleine Funktion

Ein simpler Weg der Verbesserung ist ein Cache, wobei mein Weg kein klassischer Cache ist. Es wird lediglich geprüft, wie alt die letzte Auswertung ist. Derzeit steht das Limit auf 10 Minuten. Das heißt: Wenn die Grafiken älter sind als 600 Sekunden, werden sie neu erstellt. In PHP geht das ganz einfach. Zur Hilfe habe ich eine kleine Funktion erstellt:

Die Funktion bekommt zwei Werte mit. Dateiname und Zeit. Die Zeit sind die 600 Sekunden, Dateiname kann irgendwas sein. Die erste Prüfung schaut, ob die Datei überhaupt existiert. Wenn sie nicht existiert, wird false zurück gegeben. In dem Fall wird die Grafik neu erstellt. Wenn sie existiert, wird in $now das aktuelle Datum mit Uhrzeit festgehalten. Dann wird in der Variable

$fileTime das Datum der Datei gespeichert. Das ist das Wichtigste. Mit filemtime($filename) lässt sich dies in PHP sehr einfach realisieren. Nun wird die Differenz geprüft. Ist sie >= $time (600 Sekunden), wird erneut false zurück gegeben, ansonsten true. Fertig ist der Lack.

Aufruf der Funktion

In den Funktionen, wo die Grafik erstellt wird, ruft man dann nur noch die Prüfung auf.

Es versteht sich von selbst, dass man hier auch den Abruf der Daten mit der Abfrage umschließt. Das Erzeugen der Grafik selbst ist meistens nicht das Problem, sondern eher die Auswertung der benötigten Datensätze.

 

Hat Dir dieser Artikel gefallen? Dann würden wir uns sehr über Unterstützung freuen.

Vorheriger ArtikelUnterstützer gesucht
Nächster ArtikelWebgamers.de überarbeitet
Sven Gramatke
Sven Gramatke//www.gravitationart.com/
Schreibt gelegentlich Artikel. Schwerpunkte sind Gamedesign, Programmierung (GML, PHP und JS), Retro und Berichte.
Abonnieren
Benachrichtige mich bei
guest
0 Comments
Inline Feedbacks
View all comments

NEWS

Revision 2022

Revision 2022 – Eine Satellitenveranstaltung

0
Wer zu Ostern noch nichts vor hat, sollte über einen Besuch der Revision nachdenken. Diese Demoszene-Party startet am Karfreitag, den 15. April und endet...
news logo 696x400

Revorix Update 1.9

1
Revorix hat ein neues Update bekommen: Patch 1.9 Hauptfeature sind Ressourcen-Events mit der Möglichkeit wechselnde Ressourcen spenden zu können gegen noch zu enthüllende Überraschungen. Außerdem...
news logo 696x400

Godot 3.4.2 veröffentlicht

0
Kurz nach Version 3.4.1 wurde schon 3.4.2 der Spieleengine veröffentlicht. Grund für das schnelle Update war ein Fehler. Bein Rendering unter macOS konnte es...
news logo 696x400

CRYENGINE 5.7 Roadmap enthüllt

0
Nach langer Wartezeit wurde nun die Roadmap für die CRYENGINE 5.7 enthüllt. Crytek räumt dabei interne Schwierigkeiten ein. Intern sind wir bei der Entwicklung auf...
manasoup

Tolle Projekte in der Manasoup-Gamejam

0
Die Manasoup-GameJam ist zu Ende und es gibt viele tolle, unglaubliche Spiele, die man kostenfrei runterladen und spielen kann. Herzlichen Glückwunsch an die Gewinner -...
0
Would love your thoughts, please comment.x
()
x