サイトの特定のページにアクセスしたときに、非常に短いセッション (3 分) を設定する必要があります。その 3 分間のセッション中に誰かが再びそのページにアクセスした場合、セッションはその時間から 3 分後に期限切れになるように更新する必要があります。
私の「ブートストラップ」 (典型的な Zend ブートストラップではありませんが、すべてのページに含まれています) では、次のことを行います。
$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);
次に、セッションを作成/更新する必要があるページ内に、次のものがあります。
App::$ReservationSession = new Zend_Session_Namespace("ReservationSession");
$oSaveHandler = Zend_Session::getSaveHandler();
$oSaveHandler->setLifetime(App::$ReservationTimeout);
データベースにレコードが表示され、ライフタイム列は正しいのですが、セッションを作成/更新するページに繰り返しアクセスすると、3 分後に新しいセッション ID が取得されます (ガベージ コレクションの後に別のセッション ID が削除されます)。
問題は、Cookie を取得してその時を更新しているようです。何か案は?