По умолчанию, ключи в sessions не имеют срока жизни.
Проверить гипотезу можно следующим образом:
- подключиться к консоли redis с помощью redis-cli
- найти нужный ключ с сессией
- посмотреть его время жизни с помощью команды TTL.
У меня вот так, т.е. TTL устанавливается равным 3900 после обновления страницы, судя по всему.
127.0.0.1:6380> keys *
…
4) “session:3c20c5bfcfc0377b9178e75427e2ca65-C”
…
8) “online:session:3c20c5bfcfc0377b9178e75427e2ca65-C”
…
127.0.0.1:6380> ttl online:session:3c20c5bfcfc0377b9178e75427e2ca65-C
(integer) 288
127.0.0.1:6380> ttl session:3c20c5bfcfc0377b9178e75427e2ca65-C
(integer) 3878
127.0.0.1:6380>
Происходит это здесь, похоже (app/Tygh/Backend/Session/Redis.php - и код этот стандартный)
public function write($sess_id, $data)
{
$this->query('hmSet', $this->id($sess_id), $data);
$this->query('setTimeout', $this->id($sess_id), $this->config['ttl'] + SECONDS_IN_HOUR); // increase alive time to allow garbage collector move session to stored sessions storage
$this->query('set', $this->id($sess_id, 'online:'), 1);
$this->query('setTimeout', $this->id($sess_id, 'online:'), $this->config['ttl_online']);
return true;
}
Правда, я не совсем понимаю, почему у меня ставится 3900, когда должно быть 3600 + $this->config['ttl'] (это насколько я понял тянется из app/Tygh/Session.php:
protected static $ttl = SESSION_ALIVE_TIME;
что равно:
define('SESSION_ALIVE_TIME', SECONDS_IN_HOUR * 2); // 2 hours)
Т.е. должно быть итоговое TTL 10800.