Hi,
Bei meinem kleinen PHP-Framework kommt mittlerweile das Problem auf, dass ich bei jedem Seitenaufruf größere Datenmengen aus MySQL Datenbanken auslesen muss.
Damit das alles so fix wie möglich abläuft hab ich mir vorgestellt die Ergebnisse dieser Abfragen zu cachen.
Die Frage ist nun, welche Methode am besten ist.
Situation:
Ich habe eine MySQL-Tabelle "Module" mit den Feldern name (primary key), title, description, status und noch ein paar mehr.
Es werden sich wohl ca. 50-200 Datensätze in der Tabelle befinden.
Bei jedem Seitenaufruf benötige ich die Daten von geschätzten 10-20% der vorhandenen Module (immer unterschiedliche).
Mir fallen jetzt folgende Möglichkeiten ein diese Daten abzufragen:
1. Ich frage jedes benötigte Modul einzeln ab und erstelle mithilfe der Daten der Abfrage das passende PHP-Objekt.
2. Ich frage bei jedem Seitenaufruf alle Datensätze ab, erstelle in einer schleife alle PHP-Objekte und speichere diese in einem Array, auf welches ich dann zugreife wenn ein konkretes Modul benötigt wird.
3a. Ich speichere die einzelnen Module aus 1. in serialisierter Form in einer MySQL-Tabelle (Config), welche ich sowieso bei jedem Aufruf vollständig lade) und greife dann bei Bedarf auf diese Daten zurück.
wenn ein Modul geändert wird, wird der dazugehörige Config-Eintrag neu erstellt.
3b. wie 3a, allerdings speichere ich den in 2. gespeicherten Array mit allen Modulen in serialisierter Form in der Config-Tabelle und wandle diesen dann bei jedem Seitenaufruf zurück in einen Array, auf den ich dann bei Bedarf zugreifen kann.
Wenn ein Modul geändert wird bzw ein neues hinzukommt, wird der DB-Eintrag komplett neu erstellt.
4a. wie 3a, aber die Serialisierten Module werden nicht in der DB, sondern in (jeweils einer eigenen) Datei gespeichert.
4b. wie 3b, aber das Array wird in einer Datei gespeichert.
Noch zu erwähnen wäre, dass es neben der Modul-Tabelle noch weitere Objekte gibt, mit denen ich ähnlich verfahren wollte.
Da ich das Framework auf verschiedenen Systemen nutzen wollte kann ich zu verwendeter Hardware bzw PHP/MySQL-Konfiguration leider nichts sagen (sofern die PHP-Einstellungen sich nicht im PHP-Code selbst ändern lassen).
Ich freue mich schon auf eure kompetenten Antworten :)
MfG
ScaraX.