在发布问题之前,我尝试了很多。我无法找到问题的解决方案。请帮助任何人。 我是由codeigniter开发的应用程序。具有用户登录页面的应用程序,当用户登录用户详细信息会话时将创建并存储到会话表中。
$data = array(
'username' => $this->input->post('user_name'),
'is_logged_in' => true
);
$this->session->set_userdata($data);
当我使用上面的代码时,codeigniter会自动插入到我的会话表中(dt_usersession)。
如果有人尝试使用相同的用户名和密码登录,我可以像其他已登录相同详细信息的人一样通知他们。如果他/她想要登录,我会要求他们输入他们的安全密钥以关闭他们在桌面上的先前会话,并且我将允许登录当前用户。 我将从ajax检查当前会话是否存活,如果不是页面将终止并重定向到登录页面。这将完全适用于我的Web应用程序。
当我从android新会话中经常调用我的codeigniter控制器时,我也有Android应用程序(对于每个调用新会话在表中创建)。 因此,当我检查每分钟是否有其他人使用相同的用户名和密码登录时,我的会话表不断创建新行。所以我的服务器负载增加了。因为更多的用户使用我的应用程序,因此为每个用户请求多次创建新记录。如何解决这个问题,请帮助任何人
答案 0 :(得分:0)
您可以在 / application / libraries 文件夹中创建 MY_Session 类,并根据条件覆盖默认配置文件,如下所示:
class MY_Session extends CI_Session {
public function __construct() {
if(User::isLoggedIn())
{
$params = array(
"sess_use_database" => true,
"sess_table_name" => "CI_Session" // ... all other settings you may need
);
}
else
{
$params = array();
}
// initialize parent session with correct params
parent::__construct($params);
}
}
或者,您可能希望为会话创建自己的表(在CI范围之外),只需存储登录用户的ID,会话ID(session_id()
see manual)和时间戳并保留在单独离开CI会话时再次检查该表。