PHP会话过早到期

时间:2011-02-08 17:27:04

标签: php expired-sessions

我遇到问题,我的应用会话在大约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 个答案:

答案 0 :(得分:7)

我不知道CentOS,但是在Ubuntu上,php5软件包会安装一个/etc/cron.d/php5文件,该文件将在每小时的9和39上删除24分钟未触及的会话文件。因此,您至少需要24分钟,最多54分钟。

答案 1 :(得分:3)

初次检查时,我会降低你的gc_maxlifetime和cookie_lifetime设置。我怀疑14400000对于PHP来说有点高(理论上,32位操作系统应该能够达到2147483647,但这仍然是一个因素)。

如果您只需要4小时的使用寿命,那么14400将是一个完美的设置,并可能因上述原因解决您的问题。