Programmierung Warenkorb - Problem mit Session-Timeout

Alles, was PHP betrifft, kann hier besprochen werden.

Programmierung Warenkorb - Problem mit Session-Timeout

Postby melly » 29. January 2011 11:27

Hallo zusammen,

ich habe eine Frage zu Sessions, vielleicht kann mir jemand weiter helfen...

Ich habe einen kleinen Warenkorb in PHP Programmiert. Die Inhalte des Warenkorbs werden in einer Datenbank gespeichert (Tabellen 'carts' und 'items').

Um den Warenkorb zu identifiezieren speichere ich die Session-ID in der Tabelle 'carts'.

Funktioniert auch alles einwandfrei, allerdings kann der Warenkorb nicht mehr identifiziert werden, wenn die Session abläuft, da eine neue Session-ID vergeben wird. Deshalb habe ich das Session-Timeout auf 3 Stunden hochgesetzt. Nun habe ich aber gelesen, dass dies schlecht für die Performance ist, da auf diese Weise viele unbenutzte Sessions aktiv gehalten werden. Wenn ich aber das Timeout runtersetze, z.B. wieder auf 24 Minuten, wird ein Warenkorb nach 24 Minuten sozusagen 'geleert', da er nicht mehr identifiziert werden kann...

Hat jemand eine Idee wie man dies besser lösen kann? Das quasi ein Session-Timeout nach 24 Minuten stattfindet, der Warenkorb aber trotzdem länger identifiziet werden kann?


Bin dankbar für Tips ;)

Grüße Melly
melly
 
Posts: 12
Joined: 14. September 2010 20:35

Re: Programmierung Warenkorb - Problem mit Session-Timeout

Postby Nobbie » 29. January 2011 12:07

melly wrote:Hallo zusammen,

ich habe eine Frage zu Sessions, vielleicht kann mir jemand weiter helfen...

Ich habe einen kleinen Warenkorb in PHP Programmiert. Die Inhalte des Warenkorbs werden in einer Datenbank gespeichert (Tabellen 'carts' und 'items').

Um den Warenkorb zu identifiezieren speichere ich die Session-ID in der Tabelle 'carts'.


Von der Programmierlogik her ist das falsch programmiert. Der Sinn von Sessions und Sessionvariablen ist eben genau NICHT, dass man sich eine (eindeutige) ID irgendwo merken muss und die Daten in einer Datenbank verwaltet. Wenn man Sessions benutzt, dann sollte man die Daten auch in Sessionvariablen halten und die SessionID interessiert das Programm nicht.

Aber WENN Du es sowieso schon so herum programmiert hast, dann kannst Du die komplette Programmierlogik so lassen, nur verwendest Du eben keine Sessions, sondern legst ein Cookie an und in dieses Cookie schreibst Du den Primary Key des Warenkorbs. Beim Anlegen des Cookies kannst Du die Lebensdauer festlegen.
Nobbie
 
Posts: 13165
Joined: 09. March 2008 13:04

Re: Programmierung Warenkorb - Problem mit Session-Timeout

Postby melly » 29. January 2011 12:21

Hallo Nobbie,

danke für den Tip, ich werde es mal mit dem Cookie probieren.

Aber mich interessiert, wie ich es von vornherein hätte besser machen können? Also wenn ich es mit Sessions gelöst hätte... Meinst du ich hätte z.B. anstatt der ID lieber den Primary-Key des Warenkorbs in einer Session-Variable speichern sollen um den Warenkorb zu identifizieren?
melly
 
Posts: 12
Joined: 14. September 2010 20:35

Re: Programmierung Warenkorb - Problem mit Session-Timeout

Postby Nobbie » 30. January 2011 00:31

melly wrote: Meinst du ich hätte z.B. anstatt der ID lieber den Primary-Key des Warenkorbs in einer Session-Variable speichern sollen um den Warenkorb zu identifizieren?


Jain, das wäre zwar etwas besser, aber nicht viel.

Wieso nicht einfach in den Session Variablen den ganzen Warenkorb aufbewahren?
Nobbie
 
Posts: 13165
Joined: 09. March 2008 13:04


Return to PHP

Who is online

Users browsing this forum: No registered users and 56 guests