Привет, я новичок в программировании, но в настоящее время я работаю над проблемой тайм-аута сеанса. В основном моя сессия не позволяет сэкономить время, даже если я изменил session.gc_maxlifetime. Я думаю, что другой скрипт, использующий тот же каталог для хранения данных сеанса, который не имеет набора maxlifetime, запущен и, следовательно, будет использовать более короткое значение. Для борьбы с этим я изменил файл htaccess, но он все еще заканчивается после 1 часа 30 минут, мне нужно, чтобы он продолжался дольше. Мой файл htaccess приведен ниже. Я просмотрел и пробовал многие из соответствующих сообщений на этой доске, но пока ничего не получилось. Любые идеи очень приветствуются.
SetEnv PHPRC /home/rocket/public_html/php.ini # BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> <IfModule mod_php5.c> php_value session.save_path "new/username/php_sessions" php_value session.gc_maxlifetime "86400" php_value session.cookie_lifetime "86400" </IfModule> # END WordPress
PHP не делает с cookie сеанса, что вы можете подумать, что он делает …
php_value session.gc_maxlifetime "86400"
Это просто устанавливает время, по истечении которого может возникнуть сбор мусора – поскольку есть только очень небольшой шанс, что данные сеанса будут собирать мусор после этого времени, это вряд ли станет виновником.
php_value session.cookie_lifetime "86400"
Это устанавливает время, в которое истекает срок действия cookie сеанса … но он не обновляется в session_start()
поэтому, если вы запустите сеанс на одной странице, который устанавливает тактирование часов. Перемещение со страницы на страницу не приведет к сбросу «часов», поэтому сеанс с cookie_lifetime
600 истечет через 10 минут после его запуска не через 10 минут бездействия – вы можете видеть это поведение.
Лучше всего установить php_value session.cookie_lifetime "0"
это означает, что cookie сеанса истечет только тогда, когда пользователь закрывает свой браузер.
Если вы хотите обрабатывать произвольное истечение срока действия, которое запускается после периода бездействия, лучше всего сделать это в PHP-коде, установив переменную в сеансе, что-то вроде $_SESSION['expires']
и проверки / обновления / обработки, что на начало каждой страницы.