2

我有一个问题,我的应用程序会话在大约 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

现在允许我登录。

4

3 回答 3

8

我不了解 CentOS,但在 Ubuntu 上,php5 软件包安装了一个 /etc/cron.d/php5 文件,该文件将删除每小时 :9 和 :39 上的“24 分钟未触及”会话文件。所以你有最少 24 分钟和最多 54 分钟的会话。

于 2011-02-25T15:04:14.980 回答
3

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

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

于 2011-02-08T17:33:13.133 回答
0

** 创建一些每 10 分钟执行一次请求的 ajax 代码 var refreshTime = 600000; // 每 10 分钟(以毫秒为单位)**

window.setInterval( function() {
    $.ajax({
        cache: false,
        type: "GET",
        url: "refreshSession.php",
        success: function(data) {
        }
    });
}, refreshTime );
于 2021-09-21T18:56:58.907 回答