CI=&get_instance();} public function remember($key,$ttl,callable$loader){$row=$this->CI->db->where('cache_key',$key)->where('expires_at >',date('Y-m-d H:i:s'))->get('app_cache')->row();if($row){$value=json_decode($row->payload,true);if(json_last_error()===JSON_ERROR_NONE)return$value;}$value=$loader();$data=array('payload'=>json_encode($value),'expires_at'=>date('Y-m-d H:i:s',time()+max(1,(int)$ttl)),'created_at'=>date('Y-m-d H:i:s'));if($this->CI->db->get_where('app_cache',array('cache_key'=>$key))->row())$this->CI->db->where('cache_key',$key)->update('app_cache',$data);else{$data['cache_key']=$key;$this->CI->db->insert('app_cache',$data);}return$value;} public function forgetPrefix($prefix){$this->CI->db->like('cache_key',$prefix,'after')->delete('app_cache');} public function purgeExpired(){return$this->CI->db->where('expires_at <',date('Y-m-d H:i:s'))->delete('app_cache');} }