PHP: какова продолжительность жизни сеанса по умолчанию

Если я ударил страницу, которая вызывает session_start() . Как долго мне придется ждать, так что, если я должен обновить страницу, мне был выпущен новый идентификатор сеанса?

Проверьте php.ini значение, установленное для session.gc_maxlifetime, является временем жизни идентификатора в секундах.

Я считаю, что по умолчанию 1440 секунд (24 минуты)

http://www.php.net/manual/en/session.configuration.php

Изменить: Как отмечают некоторые комментарии, вышеизложенное не совсем точно. Замечательное объяснение того, почему и как реализовать время сеанса, доступно здесь:

Как мне закончить сеанс PHP через 30 минут?

Значение по умолчанию в 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 минуты для этих других сайтов (и уничтожить ваши сеансы в процессе, независимо от того, как долго они должны храниться). См. Примечание на странице руководства или на этом сайте для лучшего объяснения.

Ответ на этот вопрос – переместить сеансы в другой каталог с помощью session.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 которые влияют на продолжительность сеанса

EDIT: это как Мартин пишут раньше

Но будьте осторожны, на большинстве настроек 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