Partielles Caching mit PHP

Kann man an der Datenbank vllt Update/Insert Hooks anmelden um so darüber informiert zu werden ob sich was geändert hat und dann eben eine neue statische Seite mit den neuen Daten zu erstellen?
 
Hallo,

ja das wäre denkbar. Man könnte auch ganz pragmatisch hingehen und schauen ob sich die relevante myi,myd Datei der entsprechenden MySQL Datenbank Instanz geändert hat (filemtime) merken. Dann brauch man noch nicht mal eine SQL Abfrage.

Gruß Tom
 
Entschuldigt bitte, wenn ich jetzt nen relativ unqualifizierten Beitrag dazwischen feuer...
Aber ich verstehe den Hintergrund nicht ganz...

Welchen Sinn soll das ganze Verfolgen?

So wie ich das verstehe, würde ich einfach die entsprechenden Dateien aus den Datensätzen erstellen (ausgegangen von MySQL) und in der Db dann entsprechend nen Timestamp einsetzen... Anhand des Stamp kann dann kontrolliert werden wie alt/neu die Daten sind, um dann nen entsprechendes Handling auszulösen...

Oder hab ichs falsch verstanden?
 
Jeder ist willkommen sich an der Diskussion zu beteiligen.

Gegenfrage: Sprichst du jetzt über das Szenario des Cachens in der Datenbank oder im Dateisystem?

Im Dateisystem brauchen wir das nicht, da wir die letzte Änderungszeit der Cache Datei haben sowie die aktuelle Zeit.

Natürlich wäre der Timestamp eine Idee, aber dann bräuchten wir ein zusätzliches Skript, was alle X Minuten prüft ob sich der Timestamp geändert hat.
Dies wollen wir aber eben nicht.

Deshalb die Idee der Insert/Update Hooks.

Es geht ja darum die MySQL Last zu verkleinern und nicht darum sie auf andere Skripte auszulagern.
 
Äh, nein.

Tom hat das obige Caching System entworfen.
Das Interface bietet uns die Möglichkeit verschiedene Storages dafür nutzen zu können.
Dateisystem, Arbeitsspeicher (ebenfalls über Dateisystem, Linux macht den Rest), Datenbank, o. ä.

Das Dateisystem ist so gut wie fertig, jetzt geht es darum ggf. noch eine Klasse für die Datenbank zu entwerfen.
Und nun ist eben die Frage, wie man es am ressourcenschonensten macht, zu prüfen ob es einen Cache Miss oder Hit gibt und die Aktualität des Cache zu prüfen.
Natürlich könnte man wieder mehrere Abfragen machen, aber das wäre ja wieder kontraproduktiv.
Ergo war jetzt eine Idee die letzte Modifizierungszeit der myi/myd Dateien der Datenbank zu prüfen. Das wäre eine Idee.
Eine Alternative waren eben besagte Insert/Update Hooks von zeja. Die bei eine Änderung automatisch den Cache aktualisieren bzw. unser Skript anstoßen dies zu tun.
 
So, bin nu daheim und hab mal geschaut.
Man kann ueber SHOW TABLE STATUS an die Update-Zeit der Tabelle kommen.
So kann man alle fuer die Seite notwendigen Tabellen pruefen und somit herausfinden ob die relevanten Daten aktualisiert wurden.
Wie sich sowas am besten implementieren liesse, sodass es flexibel ist, liegt mir grad nicht auf der Zunge, aber ich werd mal drueber nachdenken.

Uebrigens, Caching in der Datenbank hatte ich dabei nicht gemeint, sondern schon die Ablage der Cache-Files im Dateisystem. Ob /dev/shm dabei so guenstig ist weiss ich nicht. Natuerlich bietet es sich an, als vollstaendig temporaerer Ablageplatz, dennoch muessen dabei, zumindest wenn es eine portable Loesung sein soll, Beschraenkungen durch Server-Einstellungen beruecksichtigt werden; und diese duerften in den meisten Faellen die Nutzung von /dev/shm ausschliessen.
 
Für die DB müsste sich das ganze mit der von Dennis genannten Funktion inner Klasse mit 3 oder 4 Funktionen gehen...
Reicht dann ja ne sehr kleine MySQL-Klasse...
Am besten natürlich mit constructor und destructor, damit keine Verbindungs-Leiche zurück bleibt...
 
Hallo zusammen,
ich stehe (glaube ich) vor einer ganz ähnlichen Problemstellung: Ich möchte (ähnlich wie hier im Forum) Suchergebnisse temporär speichern und mich dazu einer (Memory?)Caching-Methode bedienen.
(es gibt auch bereits einen Thread: http://www.tutorials.de/forum/php/316993-suchergebnisse-temporaer-speichern.html)
Ich wollte mich bei euch erkunden (ihr scheint ja etwas davon zu verstehen), ob ihr evtl. eine Seite, Tutorial o.ä. kennt, wo ich mir Grundlagen zum Caching von Daten mit PHP/MySQL aneignen kann, um vielleicht bald mein Vorhaben realisieren zu können. :rolleyes:
 
Zurück