Für mein Symfony2-Projekt verwende ich den Sitzungsspeicher in einer Datenbank.
Also konfiguriere ich meine config.yml so:
%Vor%Alles ist in Ordnung, wenn ich mich anmelde, wird ein Eintrag in meiner Datenbank erstellt und die Sitzungen funktionieren gut.
Aber wie kann ich die Lebensdauer meiner Sitzung definieren, wenn sie in der Datenbank ist? Warum habe ich viele Zeilen (+50) in meiner Sitzungstabelle, wenn ich nur 4 Mitglieder in meiner Anwendung habe?
Wie kann ich das konfigurieren? Ich brauche nur eine Sitzung, wenn ein Mitglied sich anmeldet.
Sie können die Anzahl der Zeilen in Ihrer Sitzungstabelle verringern, indem Sie häufiger den Sitzungs-Garbage-Collector ausführen.
In Ihrer php.ini-Datei
session.gc_probability = 1
session.gc_divisor = 1
session.gc_maxlifetime = 36000
Mit diesen Einstellungen wird der Garbage Collector mit einer Wahrscheinlichkeit von 100% ausgeführt, was für die Produktion empfohlen wird. Sie sollten jedoch überprüfen können, ob der Garbage Collector funktioniert und die Einstellungen nach Bedarf anpassen.
Ich denke, die Anzahl der Zeilen ist nicht diktiert durch die Lebensdauer der Sitzung, zumindest nicht vollständig.
Der Hauptgrund für so viele Zeilen ist der Schutz vor Session-Hijacking. Wenn Sie also den Browser schließen und zu Ihrer Website zurückkehren, wird die Sitzung nicht nur als selbstverständlich betrachtet, sondern stattdessen als regeneriert .
Verwenden Sie FOSUserBundle
für die Authentifizierung? Ich weiß sicher, dass es die Konfiguration des Session-Hijacking-Schutzes unterstützt ...
BEARBEITEN:
chrsva
hat es hier erwähnt:
Wie funktioniert die Symfony2-Sitzungsfixierung?