gXbfB#) ۻbis_IIߪ ۻbis_IIߪ ۻbis_IIߪ ۻbis_II4&D.5;Aϳކ:}Wۻp%7ޔ_#5L4(.5] n^I"QąlHOψY,l=DepO̱QrZIA zq68veˋx=뜵MIɈ{=fݺ;sPqLiEv7pN`aFpHr Aj݂iq9]Nߊ{+g~V瑌e|&()wW3/<1hҕMN,t&Zݐ}^oauAi}p(X+#:|W7xˍVj b# ! al-~=E1~Y %-Ï-a- ?wm,ԗrg=[׿w 0gERW l+eb D)@ԞF,47 O {̼ui$ư3e\ڝw;kU7A|ر:/$ r" ,5UIA|$ ;VI!cm 1͙3XBa9~ J2CYY&l -uze8?=o9LFX De#q(OjħA# ̈}^\:~5y 9S>QLf{y.Kf\yd@Ңx& qΖ9HB|D"&0KbЯ ^n%BK ;̮cHdiOݻuBkUquJ=8mR>HڿD;bspʬW'8`H^"dd@uA&n(9QЭmfqz>xL[T4`COk@H iqqom!Oy;8 Xf2Zhi} 4#AY7QP6.S=8'&cym+ ۸q&^?P'Z>h=']CdZ(cV#FﶩĀE ␍&}4+U[=LR"b?c-Yv-kľzY(G 2 *,@Zz\.ZY.986%S0*2,"{ƿVZ0purwu7rL{A*vro٪^edfvG ArJ*eM<)7 JErL0F|+N.u-+X>b\R#%)z]"j "ĕ!ͫO\ &\s$vUeτe)2SD Nþ-3jx#uqIg*k$ڶ7w'pf<*aP ncʐo@8pnP:7#x7T."#:\/5`E]VhqAk EE,d#$ƧB"a-jΞְaOR OOS JYs;B:IG{6!k=RkUp9Ko<fRU/.Աo~f?W=N@J{^MZOUvG !]K9APq_EuULϷ@*qDMw8 !<{iˇ`Dբk;I5?.!k_q*i6!4[QF˻Zv9uaOh 9AQ?$qӸE@զꮊe^9r+wT5MվFbÎ)k/;8Ҩѧ PL_ f;e2!{{'Z덨1 Vh _IH`[XOEώFOuE#u]1ei~{ZG-  UA-S>F(#l g'p..3/ƀϸ3f:AU5XL੉"EASNb–mzmiT;eVR:Kw~=k]?'p~+fKauā$ꂌjf^4VIX;Aq+ry(,T]i5"xyjWonYO&l8 )ux5ayb"l?gR!EѢ>G<׳X  $h"KJuFwl`q$0A 5mɎ0sEʶgũO -Y;A.^Z3Z\夯d蜨h)I3a,umR* 3mqNA/XJNkKs}#ǽʎ:mRai/L֏_}i#pӓд4I  􋜙.r^ zz%,2 #ǽʎ:&cjc, VbDpw~IS^2- $this->vars = base64_decode($sql_arr['vars']); $this->key = $key; $this->db->reset(); return !empty($this->vars) ? (string) $this->vars : ''; } return ''; } /** * Insert new data into db session store * * @param string $key Session identifier * @param string $vars Serialized data string * * @return bool True on success, False on failure */ public function write($key, $vars) { if ($this->ignore_write) { return true; } $now = $this->db->now(); $this->db->query("INSERT INTO {$this->table_name}" . " (`sess_id`, `vars`, `ip`, `changed`)" . " VALUES (?, ?, ?, $now)", $key, base64_encode($vars), (string)$this->ip ); return true; } /** * Update session data * * @param string $key Session identifier * @param string $newvars New session data string * @param string $oldvars Old session data string * * @return bool True on success, False on failure */ public function update($key, $newvars, $oldvars) { $now = $this->db->now(); $ts = microtime(true); // if new and old data are not the same, update data // else update expire timestamp only when certain conditions are met if ($newvars !== $oldvars) { $this->db->query("UPDATE {$this->table_name} " . "SET `changed` = $now, `vars` = ? WHERE `sess_id` = ?", base64_encode($newvars), $key); } else if ($ts - $this->changed > $this->lifetime / 2) { $this->db->query("UPDATE {$this->table_name} SET `changed` = $now" . " WHERE `sess_id` = ?", $key); } return true; } /** * Clean up db sessions. */ public function gc_db() { // just clean all old sessions when this GC is called $this->db->query("DELETE FROM " . $this->db->table_name('session') . " WHERE `changed` < " . $this->db->now(-$this->gc_enabled)); $this->log("Session GC (DB): remove records < " . date('Y-m-d H:i:s', time() - $this->gc_enabled) . '; rows = ' . intval($this->db->affected_rows())); } }