Увеличение времени сеанса php

Я пытаюсь увеличить время сеанса php до 6 часов.

Вот код для увеличения времени сеанса:

ini_set('session.gc_maxlifetime', 60 * 60 * 6); // 6 Hours 

Однако, похоже, ТОЛЬКО имеет время сеанса 1 час.

Любое предложение очень ценится.

Кроме того, как проверить эту функцию, не дожидаясь 6 часов, чтобы узнать, не истекает ли время сеанса.

Solutions Collecting From Web of "Увеличение времени сеанса php"

Сценарий

Вы используете Debian Linux или Ubuntu Linux. Вы хотите, чтобы сеансы PHP длились дольше 1440 секунд (24 минуты). Итак, вы делаете это:

 ini_set('session.gc_maxlifetime', 10800); # 3 hours 

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

Но независимо от того, что вы делаете, сеансы продолжают удаляться через 24-54 минуты. Кажется, PHP игнорирует параметр gc_maxlifetime.

Почему это происходит

Debian и Ubuntu Linux переопределяют поведение сеанса PHP. Если вы посмотрите внимательно, вы увидите, что для параметра session.gc_probability установлено значение 0, то есть сбор мусора PHP никогда не будет выполняться. Вместо этого в файле /etc/cron.d/php5 выполняется задание cron, зависящее от Debian, которое запускается каждые 30 минут!

Задача cron выполняет сбор мусора на основе глобального session.gc_maxlifetime в php.ini. Session.gc_maxlifetime в вашем приложении игнорируется.

Решение

Хотя вы можете отключить задание cron и / или изменить php.ini, я бы предпочел исправить проблему без изменения системных значений по умолчанию. Лучшее решение – создать свой собственный каталог сессий, где-то вне нормального, а затем локально включить сборку мусора в PHP.

Для этого set session.gc_maxlifetime, session.gc_probability, session.gc_divisor, and session.save_path :

 # Session lifetime of 3 hours ini_set('session.gc_maxlifetime', 10800); # Enable session garbage collection with a 1% chance of # running on each session_start() ini_set('session.gc_probability', 1); ini_set('session.gc_divisor', 100); # Our own session save path; it must be outside the # default system save path so Debian's cron job doesn't # try to clean it up. The web server daemon must have # read/write permissions to this directory. session_save_path(APP_PARENT_DIR . '/sessions'); # Start the session session_start(); 

Вам также нужно изменить еще пару переменных в php.ini

См. http://prajapatinilesh.wordpress.com/2009/01/14/manually-set-php-session-timeout-php-session/ для параметров.

Увеличение session.gc_maxlifetime через ini_set может не работать, если выполняется другой скрипт (например, другой vhost), который использует один и тот же session.save_path. Другой скрипт удаляет сеансы всех скриптов по собственному времени жизни:

Заметка:
Если разные скрипты имеют разные значения session.gc_maxlifetime, но используют одно и то же место для хранения данных сеанса, тогда скрипт с минимальным значением будет очищать данные. В этом случае используйте эту директиву вместе с session.save_path.

Источник: http://php.net/manual/en/session.configuration.php#ini.session.gc-maxlifetime

Также не забудьте изменить настройку перед session_start (). Если у вас включен session.auto_start, то в конце, когда вы используете ini_set.

Попробуйте следующее-

  • Избегайте пробелов

ini_set ('session.gc_maxlifetime', 60 * 60 * 6);

Или

  • просто введите значения в секундах как …

ini_set ('session.gc_maxlifetime', 21600);

использовать это

 ini_set('session.gc_maxlifetime', 6 * 60 * 60); // 6 Hours instead to this ini_set('session.gc_maxlifetime', 60 * 60 * 6); // 1 Hours ini_set('session.gc_maxlifetime', [hours] * [minutes] * [seconds]);