Moin!
Was spricht gegen die Lösung, dass die Daten nicht in der Session, sondern in einer .txt Datei gespeichert werden und nur durch die Session "referenziert" wird? - Das wird an der Performance wenig ändern (wahrscheinlich macht das PHP sogar genauso), hätte aber folgenden Vorteil:
Die Daten sind jederzeit gleich "real-time", wie in der DB-Solution. Auch wenn du später mal den Warenkorbinhalt inspizieren möchtest (eventuell...), hättest du die Möglichkeit dazu. Das Warenkorb-Modul hätte auch im gleichen Script noch die Möglichkeit (ohne programmiertechnische Tricks) die Daten einzulesen.
Also, für jede neue Session/Besucher erstellst du einen eindeutigen Dateinamen (1.txt, 2.txt, ...), welcher die "Sessiondaten" bzw. die Warenkorb- und Produktdaten enthält. Die .txt - Datei hat folgendes, simples, aussehen:
Tja, PHP macht das in der Tat genauso: Für jede eröffnete Session wird eine Textdatei angelegt, welche die Daten der Session (also alle registrierten Session-Variablen) enthält. Hat nur den Vorteil, daß man die ganze Dateiverwaltungsscheiße einfach PHP überläßt, wie z.B. gleichzeitige Dateizugriffe zu verhindern etc.
Mit anderen Worten: Deine Lösung kann eigentlich nur unperformanter sein, als PHP einfach die Verwaltung zu überlassen. Denn um die Variablen aus der Textdatei auszulesen und dem Script zur Verfügung zu stellen, muß natürlich PHP-Code eingelesen, kompiliert und ausgeführt werden - wie optimiert der dann ist, ist die Frage. Optimaler als die Routinen in PHP selbst wird das aber wohl kaum sein.
Also keine so besonders gute Idee.
Spannend auch die Frage: Hier wird immer von Performance geredet. Dabei kann ich mir kaum vorstellen, daß immer ein Performanceproblem vorliegt. Wenn's um Performance geht, dann stellt man das eigentlich daran fest, daß ein gewisser Vorgang unerträglich lange dauert. Dann sollte man Optimierungen vornehmen - das kann von besserem Code über andere Verfahrensweisen bis hin zu schnellerer Hardware gehen. Die Frage ist zuerst, was sich am leichtesten realisieren läßt. Und dann, was am billigsten machbar ist. Und hinterher muß natürlich getestet werden, ob es wirklich performanter ist. :)
- Sven Rautenberg