PHP: каково время жизни сеанса по умолчанию
Если я нажму на страницу, которая вызывает session_start()
. Как долго мне придется ждать, чтобы, если я должен был обновить страницу, мне был выдан новый идентификатор сеанса?
6 ответов:
Проверьте php.ini значение, установленное для сеанса.gc_maxlifetime-это время жизни идентификатора в секундах.
Я считаю, что по умолчанию 1440 секунд (24 минуты)
http://www.php.net/manual/en/session.configuration.php
Edit: как указывают некоторые комментарии, вышеизложенное не совсем точно. Замечательное объяснение того, почему и как реализовать время жизни сеанса доступно здесь:
значение по умолчанию в php.ini для
session.gc_maxlifetime
директива ("gc" для сбора мусора) составляет 1440 секунд или 24 минуты. См. страницу конфигурирования среды выполнения сеанса в руководстве:http://www.php.net/manual/en/session.configuration.php
Вы можете изменить эту константу в PHP.ini или .httpd.файлы conf, если у вас есть доступ к ним, или в местные .htaccess файл на вашем веб-сайте. Чтобы установить тайм-аут в один час с помощью .метод htaccess, добавьте эту строку в поле .файл htaccess в корневом каталоге сайта:
php_value session.gc_maxlifetime "3600"
будьте осторожны, если вы находитесь на общем хосте или если вы размещаете более одного сайта, где вы не изменили значение по умолчанию. Местоположение сеанса по умолчанию-каталог /tmp, и процедура сборки мусора будет выполняться каждые 24 минуты для этих других сайтов (и уничтожать ваши сеансы в процессе, независимо от того, как долго они должны быть). Смотрите Примечание на руководство страница или этот сайт для лучшего объяснения.
ответ на это-переместить ваши сеансы в другой каталог с помощью сеанса.save_path. Это также помогает предотвратить захват плохими парнями сеансов ваших посетителей из каталога по умолчанию / tmp.
согласно пользователю на PHP.net Сайт, его усилия, чтобы сохранить сеанс в живых не удалось, поэтому он должен был сделать обходной путь.
<?php $Lifetime = 3600; $separator = (strstr(strtoupper(substr(PHP_OS, 0, 3)), "WIN")) ? "\" : "/"; $DirectoryPath = dirname(__FILE__) . "{$separator}SessionData"; //in Wamp for Windows the result for $DirectoryPath //would be C:\wamp\www\your_site\SessionData is_dir($DirectoryPath) or mkdir($DirectoryPath, 0777); if (ini_get("session.use_trans_sid") == true) { ini_set("url_rewriter.tags", ""); ini_set("session.use_trans_sid", false); } ini_set("session.gc_maxlifetime", $Lifetime); ini_set("session.gc_divisor", "1"); ini_set("session.gc_probability", "1"); ini_set("session.cookie_lifetime", "0"); ini_set("session.save_path", $DirectoryPath); session_start(); ?>
в папке SessionData будут храниться текстовые файлы для хранения информации о сеансе, каждый файл будет иметь имя, подобное "sess_a_big_hash_here".
это зависит от ваших настроек php...
используйтеphpinfo()
и взгляните на главу сессии. Есть такие значения, какsession.gc_maxlifetime
иsession.cache_expire
иsession.cookie_lifetime
что влияет на продолжительность жизни сеансыизменить: это как Мартин писать перед
но будьте осторожны, на большинстве xampp / ampp/...- настройки и некоторые атрибуты linux это 0, что означает, что файл никогда не будет удален, пока вы не сделаете это в своем скрипте (или грязном через оболочку)
PHP.INI:
; Lifetime in seconds of cookie or, if 0, until browser is restarted. ; http://php.net/session.cookie-lifetime session.cookie_lifetime = 0