opencart设置会话maxlifetime

时间:2013-06-14 08:53:14

标签: php session opencart

我正在尝试在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();
    }
}
?>

现在我可以在文件夹中看到会话文件,但它们似乎只要在进行任何修改之前就可以使用。 我做错了什么?

1 个答案:

答案 0 :(得分:0)

session.gc_maxlifetime的文档说:

  

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

它可以清理它或者可能在当时离开它。是否清关取决于session.gc_probabilitysession.gc_divisor。在访问量很大的网站上这不是问题。但是你可以通过几次访问在本地机器上观察它。

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