Время работы сеанса Zend Framework 2

Я пытаюсь установить максимальное время жизни сессии с помощью \Zend\Session\Container . Чтобы проверить это, я положил его на 1 сек.

Теперь я посмотрел документы

Так я и сделал

 $config = new StandardConfig(); $config->setOptions(array( 'remember_me_seconds' => 1, )); $manager = new SessionManager($config); $session = new Container('user', $manager); 

Но успеха нет. Затем я начал поиск в Google и нашел этот ответ

Поэтому я сделал конфигурацию

 return array( 'session' => array( 'remember_me_seconds' => 2419200, 'use_cookies' => true, 'cookie_httponly' => true, ), ); 

(конфигурация работала и загружалась в диспетчер), но опять не удалась

Поэтому я продолжил поиск и нашел этот ответ

Но опять же никакого успеха.

Поэтому после всех поисков я не мог заставить его работать, поэтому теперь я надеюсь, что кто-то еще заработает и сможет мне помочь.

Ну, я наконец выяснил, в чем проблема.

Проблема заключалась в том, что я использовал

 $sessionConfig = new SessionConfig(); $sessionConfig->setOptions(array( 'use_cookies' => true, 'cookie_httponly' => true, 'gc_maxlifetime' => $config['authTimeout'], )); $manager = new SessionManager($sessionConfig); 

Это «сработало», единственная проблема заключалась в том, что был установлен файл cookie с session продолжительности жизни. Это разные вещи в браузерах. Т.е. в хром он уничтожается, если вы закроете вкладку, поэтому независимо от того, насколько высока gc_maxlifetime она не будет работать.

Таким образом, легкое исправление будет следующим:

 $sessionConfig = new SessionConfig(); $sessionConfig->setOptions(array( 'use_cookies' => true, 'cookie_httponly' => true, 'gc_maxlifetime' => $config['authTimeout'], 'cookie_lifetime' => $config['authTimeout'], )); $manager = new SessionManager($sessionConfig); 

Надеюсь, это поможет кому-то в будущем

$config['authTimeout'] – положительное целочисленное значение

 $config = new StandardConfig(); $config->setOptions(array( 'cookie_lifetime' => '2419200', 'gc_maxlifetime' => '2419200' )); 

Измените значение 2419200 на сколько секунд вы действительно хотите.

В приложении global.php или вы можете сделать это в конфигурации модуля:

  'session_config' => array( 'name' => 'your session name', 'remember_me_seconds' => 60 * 60 * 24 * 30*3, 'use_cookies' => true, 'cookie_httponly' => true, ), 

проверьте Zend \ Session \ Service \ SessionConfig.