Intereting Posts

Сессия PHP слишком рано

У меня проблема, мои сеансы приложений истекают неожиданно через 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 минут.