我有一个问题。我正在使用最新版本的CI。codeigniter会话保存到数据库不断更新多次
我目前已经启用会话来使用数据库,但是它的工作方式只有一个问题,因为每次更新会话时它都会更新数据库。
有没有办法解决这个问题,以便会话只会在数据库破坏之前更新一次?
我目前只有来自一个CI会话的9个更新请求:)!所以任何帮助都会很可爱。
一个简单的代码示例,我proccess比这要复杂得多,但只是为了演示目的
控制器/ AUTH [包括与真正登录后]
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直到结束,
只更新USER_DATA一次在所有runtime -destructor的最后,最终结果会话足以将会话保存到db。
请注意,CI使用select * from ci_session
(图片中的第一个请求)从会话加载会话,然后它只是反复更新会话并且毫无意义,因为它不会在运行时再次选择它!
所以为什么不只是一旦加载会话库就加载它。并在破坏之前保存它。多数民众赞成什么即时尝试完成。
由于
当然,如果您决定将会话数据存储在数据库中,那么只要会话更新,数据库就必须更新?你为什么要不要更新? – jleft 2013-05-05 21:21:31
当然它应该更新..但只有一次就够了!它不需要每一次都进行更新..在所有工作完成后,只有一次该怎么办? – Zalaboza 2013-05-05 22:18:39
程序中的哪些代码导致了这些请求? – jleft 2013-05-05 22:39:24