我有个问题。我正在使用最新版本的 CI。
我目前已启用会话以使用数据库,但它的工作方式只有一个问题,因为它倾向于在每次更新会话时更新数据库。
有没有办法解决这个问题,以便会话在破坏之前只更新一次数据库?!
我目前只有一个 CI 会话大约有 9 个更新请求 :) !所以任何帮助都会很可爱。
一个简单的代码示例,我的过程比这复杂得多,但仅用于演示目的
控制器/身份验证 [包括具有真实登录的帖子]
function login(){
$trial=$this->user->attempt($this->input->post('user'),$this->input->post('pass'));
if($trial){
//1st update query
$this->session->set_userdata('user',$trial);
//Start intializing user
//2nd update query
$this->load->model('relations');//constructer will load user friends and save them to $this->session->set_userdata('relations',$rel);
//3rd update query
$this->load->model('settings');//construtor will load user settings and save them to settings
}
}
上面的代码将创建 3 个更新请求,所有这些请求都针对更新字段 userdata = 当前会话。
我的观点是每次我们向会话中添加一些东西时都不需要更新数据库,它已经保存在 $_SESSION 中,所以保持在那里,并继续操作 $_SESSION 直到结束,
仅在所有运行时 -destructor- 结束时使用最终结果会话更新 user_data 就足以将会话保存到数据库。
请注意,CI 使用select * from ci_session
(图片中的第一个请求)从会话加载会话,然后它只是不断重复更新会话且毫无意义,因为它不会在运行时再次选择它!
那么为什么不加载它一次加载会话库。并在它破坏之前保存它。这就是我想要完成的。
谢谢