Files
2026-09-11 16:03:00 +07:00

10 lines
1.0 KiB
PHP

<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class PerformanceCacheService
{
private $CI;public function __construct(){$this->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');}
}