db = $db; } public function close() { return true; } public function destroy($sessionID) { return $this->db->table(self::TABLE)->eq('id', $sessionID)->remove(); } public function gc($maxlifetime) { return $this->db->table(self::TABLE)->lt('expire_at', time())->remove(); } public function open($savePath, $name) { return true; } public function read($sessionID) { $result = $this->db->table(self::TABLE)->eq('id', $sessionID)->findOneColumn('data'); return $result ?: ''; } public function write($sessionID, $data) { $lifetime = time() + (ini_get('session.gc_maxlifetime') ?: 1440); if ($this->db->table(self::TABLE)->eq('id', $sessionID)->exists()) { return $this->db->table(self::TABLE)->eq('id', $sessionID)->update(array( 'expire_at' => $lifetime, 'data' => $data, )); } return $this->db->table(self::TABLE)->insert(array( 'id' => $sessionID, 'expire_at' => $lifetime, 'data' => $data, )); } }