我有一個問題。我正在使用最新版本的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