Ich muss eine sehr kurze Sitzung (3 Minuten) auf eine bestimmte Seite auf meiner Website zu treffen. Wenn jemand während dieser 3-minütigen Sitzung erneut auf diese Seite klickt, sollte die Sitzung aktualisiert werden und 3 Minuten später ablaufen.Zend_Session und Ablauf
Auf meinem „Bootstrap“ (es ist kein typisches Zend Bootstrap, aber es ist in jeder Seite enthalten), kann ich folgendes:
$aSessionSaveHandlerConfig = array
(
"name" => "Sessions",
"primary" => "Session_ID",
"modifiedColumn" => "UpdateTimestamp",
"dataColumn" => "Data",
"lifetimeColumn" => "Lifetime",
);
$oSaveHandler = new Zend_Session_SaveHandler_DbTable($aSessionSaveHandlerConfig);
$oSaveHandler->setLifetime(App::$ReservationTimeout)->setOverrideLifetime(true);
Zend_Session::setSaveHandler($oSaveHandler);
ini_set("session.cookie_lifetime",App::$ReservationTimeout);
$aSessionOptions = array
(
"gc_probability" => 100,
"gc_divisor" => 100,
"gc_maxlifetime" => App::$ReservationTimeout,
"cookie_lifetime" => App::$ReservationTimeout,
);
Zend_Session::setOptions($aSessionOptions);
dann innerhalb der Seite, sollten erstellen/aktualisieren die Sitzung, die ich habe:
App::$ReservationSession = new Zend_Session_Namespace("ReservationSession");
$oSaveHandler = Zend_Session::getSaveHandler();
$oSaveHandler->setLifetime(App::$ReservationTimeout);
ich die Datensätze in der Datenbank zu sehen, ist die Lebensdauer Spalte richtig, aber wenn ich immer wieder die Seite getroffen, die/aktualisiert die Sitzung erstellt, erhalte ich eine neue Session-ID nach 3 Minuten vergehen (und der andere wird nach der Garbage Collection entfernt.
Es scheint, dass das Problem darin besteht, dass der Cookie aktualisiert wird. Irgendwelche Ideen?
Awesome Erklärung, aber ich habe MySQL InnoDB Fremdschlüssel Einschränkungen mit der Session-ID, so ist es notwendig, die gleiche Session ID beim Aktualisieren der Zeitüberschreitung beizubehalten. Ist es möglich zu tun, was rememberMe macht, ohne die Session ID zu ändern? – Travis