У меня проблема, мои сеансы приложений истекают неожиданно через 15 минут. Мне нужно, чтобы они истекали через 4 часа.
Сервер – Centos 5.5, PHP – 5.3.2.
Ниже мой код (включен в глобальный заголовок).
<?php session_name('MobileSuiteHQ'); if(!session_id()) { session_start(); } ini_set('memory_limit', '512M'); ini_set('session.gc_maxlifetime', 14400000); ini_set('session.cookie_lifetime', 14400000); ini_set('session.gc_divisor', 1000); ini_set('session.use_cookies', 0); ini_set('max_execution_time', 300); ini_set('session.name','MobileSuiteHQ'); ?>
Мой файл .htaccess содержит:
php_value session.gc_maxlifetime 14400000 php_value session.cookie_lifetime 14400000 php_value session.use_cookies 0 php_value session.gc_divisor 1000
Любая помощь или проницательность будут полезными.
EDIT: мне не удалось войти в систему, когда я обновил файл .htaccess, сессия не начиналась. Поэтому я теперь удалил:
php_value session.use_cookies 0
который теперь позволяет мне войти в систему.
При первом осмотре я бы снизил ваши настройки gc_maxlifetime и cookie_lifetime. Я подозреваю, что 14400000 является немного большим для PHP, с которым можно справиться (теоретически 32-битная ОС должна быть в состоянии подняться до 2147483647, но это все равно может быть фактором).
Если вам нужно всего 4 часа жизни, тогда 14400 будет идеальной настройкой и может решить вашу проблему по указанной выше причине.
Я не знаю о CentOS, но на Ubuntu пакет php5 устанавливает файл /etc/cron.d/php5, который удалит файлы «нетронутой на 24 минуты» сеанса: 9 и: 39 каждого часа. Таким образом, у вас есть минимум 24 минуты и максимум 54 минут.