Сессия PHP заканчивается слишком рано - PullRequest
1 голос
/ 08 февраля 2011

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

Любая помощь или понимание было бы здорово.

РЕДАКТИРОВАТЬ: Мне не удалось войти, когда я обновил свой файл .htaccess, сессия не началась. Итак, я сейчас удалил:

php_value session.use_cookies 0

, который теперь позволяет мне войти.

Ответы [ 2 ]

7 голосов
/ 25 февраля 2011

Я не знаю о CentOS, но в Ubuntu пакет php5 устанавливает файл /etc/cron.d/php5, который будет удалять нетронутые в течение 24 минут файлы сеансов в: 9 и: 39 каждого часа. Таким образом, у вас есть минимум 24 минут и максимум 54 минут сеансов.

3 голосов
/ 08 февраля 2011

При первоначальном рассмотрении я бы снизил ваши настройки gc_maxlifetime и cookie_lifetime. Я подозреваю, что 14400000 немного выше для PHP, чтобы справиться (теоретически 32-битная ОС должна иметь возможность подняться до 2147483647, но это все еще может быть фактором).

Если вам нужно всего 4 часа жизни, тогда 14400 будет идеальным вариантом и может решить вашу проблему по причине, указанной выше.

...