我正在尝试在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();
}
}
?>
现在我可以在文件夹中看到会话文件,但它们似乎只要在进行任何修改之前就可以使用。 我做错了什么?
答案 0 :(得分:0)
session.gc_maxlifetime
的文档说:
session.gc_maxlifetime指定数据被视为“垃圾”并且可能清理的秒数
它可以清理它或者可能在当时离开它。是否清关取决于session.gc_probability
和session.gc_divisor
。在访问量很大的网站上这不是问题。但是你可以通过几次访问在本地机器上观察它。
无论如何,最好不依靠服务器端垃圾收集器,而是依赖于cookie的生命周期。