0

我正在尝试在 opencart 中设置会话生命周期的特定时间,

深入研究 OpenCart 结构,我发现了文件会话处理程序system/library/session.php

<?php
class Session {
    public $data = array();

    public function __construct() {     
        if (!session_id()) {
            ini_set('session.use_cookies', 'On');
            ini_set('session.use_trans_sid', 'Off');

            session_set_cookie_params(0, '/');
            session_start();
        }

        $this->data =& $_SESSION;
    }

    function getId() {
        return session_id();
    }
}
?>

我正在做一些测试以查看我正在做的事情是否正常,然后我在system文件夹中创建了一个 my_sessions 并编辑了时间以在一分钟后让会话结束:

<?php
class Session {
    public $data = array();

    public function __construct() {     
        if (!session_id()) {
            ini_set('session.use_cookies', 'On');
            ini_set('session.use_trans_sid', 'Off');

            session_set_cookie_params(60, '/');
            ini_set('session.cache_expire', '1');
            ini_set('session.gc_maxlifetime', '60');
            ini_set('session.save_path',DIR_SYSTEM.'my_sessions');

            session_start();
        }

        $this->data =& $_SESSION;
    }

    function getId() {
        return session_id();
    }
}
?>

现在我可以在文件夹中看到会话文件,但它们似乎与任何修改之前一样长。我做错了什么?

4

1 回答 1

0

的文档session.gc_maxlifetime说:

session.gc_maxlifetime 指定数据将被视为“垃圾”并可能被清理的秒数

它可能会清理它,也可能会在当时留下它。是否清理取决于session.gc_probabilitysession.gc_divisor。在访问量很大的网站上,这不是问题。但是您可以通过几次访问在本地机器上观察它。

无论如何,最好不要依赖服务器端垃圾收集器,而是依赖于 cookie 的生命周期。

于 2013-06-14T09:17:40.067 回答