Слишком быстрое время ожидания сеанса с CakePHP 2.0

Недавно я перешел на Cake2.0, и у меня возникли проблемы с таймингом сеансов гораздо раньше, чем следовало бы.

Копирование примера из документации, я установил тип сеанса на php и установил время ожидания на 3 дня (4320 минут). Однако после прочтения различных статей кажется, что даже после установки таймаута на 3 дня в Cake, PHP может уничтожить сессию в GC, если в PHP.ini установлен более короткий таймаут для сессии или GC.

Итак, я изменил сеанс по умолчанию на торт с тем же тайм-аутом.

Configure::write('Session', array(
   'defaults' => 'cake',
   'timeout' => 4320,
));

Configure::write('Security.level', 'medium');

Однако, хотя это должно оставить меня в системе на 3 дня, я обнаружил, что едва получаю 3 часа, прежде чем мне нужно снова войти в систему.

Есть ли проблема с тайм-аутами сеанса, о которой я должен знать, или тайм-аут в секундах (не в минутах?), Или на него влияет Security.level, как в 1.3? Я не смог найти никакой подробной документации о том, как это работает в версии 2.0 или о том, что может вызывать проблемы.

Заранее спасибо.

Ответ: Для тех, кто придет позже и увидит это. В версии 2.0.5 есть ошибка, из-за которой тайм-аут сеанса не сохранял значение в Config.write();

Чтобы решить проблему, обновитесь до 2.0.6 (или 2.1, когда выйдет бета-версия)


person harisenbon    schedule 14.02.2012    source источник
comment
Приятно знать! Спасибо за обновление вашего вопроса с решением.   -  person Chuck Burgess    schedule 16.02.2012
comment
Странно, я все еще получаю эту ошибку в 2.0.6...   -  person Ben Brocka    schedule 26.03.2012


Ответы (1)


Если вы используете компонент безопасности, вы всегда можете попробовать изменить срок их действия на 3 часа:

$components = array(
    'Security' => array(
        'csrfExpires' => '+3 hour'
    )
);

Я не говорю, что это хорошая идея, но это может помочь вам сузить круг проблем. Если вы используете компонент «Безопасность», проблема, скорее всего, в нем.

Кроме того, Session.timeout указывается в минутах (не секундах).

person Chuck Burgess    schedule 15.02.2012