Мне нужно установить очень короткий сеанс (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 минуты (а другой удаляется после сборки мусора.
Похоже, проблема заключается в том, чтобы файл cookie обновлял свое время. Есть идеи?