Ich habe einige Nachforschungen angestellt und keine endgültige Antwort gefunden.
Wir haben eine Web-App, die den PHP + Memcache-Sitzungshandler verwendet.
Ich habe mehrere Fragen, die alle miteinander zusammenhängen, aber letztendlich lautet mein Problem: "Warum laufen PHP-Sitzungen anscheinend nicht ab, wenn wir glauben, dass sie es sein sollten?" dh Der Endbenutzer sollte nach einer festgelegten Zeit von der App abgemeldet sein, ist dies jedoch nicht.
Hier sind die Punkte, bitte helfen Sie mir, sie zu verbinden, und sagen Sie mir, wo ich mich irre:
- Ich verstehe, dass Memcache Schlüssel basierend auf der eingestellten Zeit in Sekunden (oder Unix-Zeitstempel für größere Werte) abläuft.
- Der Ablauf ist faul - dh nichts wird im Voraus gelöscht
- Der PHP-Memecache-Sitzungshandler verwendet die session.gc_max_lifetime, um den Ablauf des Memcache-Schlüssels festzulegen. Idk, vielleicht nicht?
- Memcache sollte einen angeforderten Schlüssel nicht bereitstellen (und dann möglicherweise auch löschen?), Wenn er einen angeforderten Schlüssel bereitstellt und feststellt, dass er abgelaufen ist. Aber zumindest nicht dienen.
- Dieser Vorgang, es nicht bereitzustellen, sollte für PHP einer gelöschten Sitzung und dem abgemeldeten Benutzer entsprechen.
Benutzer werden nicht abgemeldet.
Wie kann ich das überhaupt debuggen? Memcache ist nicht gerade transparent.
Der Beispielfall, der nicht funktioniert hat, ist eine Site mit einem Sitzungszeitlimit von zwei Stunden. Ein Beispielbenutzer würde die Site zuletzt nachts verwenden und dann 8 bis 10 Stunden später zur Site zurückkehren und trotzdem angemeldet sein.