私のサイトの特定のページを押すと非常に短いセッション(3分)を設定する必要があります。その3分のセッション中に誰かがそのページに再び当たった場合、セッションはその時間から3分経過すると更新されます。私の「ブートストラップ」でZend_SessionとExpiration
(それは典型的な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を取得します(もう1つはガベージコレクションの後に削除されます。
問題は、クッキーが時間を更新するようになっているようです。何か案は?
私は、セッションIDを使用してMySQL InnoDBの外部キー制約を持っているため、タイムアウトを更新するときに同じセッションIDを保持する必要があります。セッションIDを変更せずに覚えていることを実行できますか? – Travis