| <?php |
| namespace lib; |
|
|
| class Cache { |
| public function get($key) { |
| global $_CACHE; |
| return $_CACHE[$key]; |
| } |
| public function read($key = 'config') { |
| global $DB; |
| $value = $DB->getColumn("SELECT v FROM pre_cache WHERE k=:key LIMIT 1", [':key'=>$key]); |
| return $value; |
| } |
| public function save($key ,$value, $expire=0) { |
| if (is_array($value)) $value = serialize($value); |
| global $DB; |
| if($expire) $expire = time() + $expire; |
| return $DB->exec("REPLACE INTO pre_cache VALUES (:key, :value, :expire)", [':key'=>$key, ':value'=>$value, ':expire'=>$expire]); |
| } |
| public function pre_fetch(){ |
| global $_CACHE; |
| $_CACHE=array(); |
| $cache = $this->read('config'); |
| $_CACHE = @unserialize($cache); |
| if(empty($_CACHE['version']))$_CACHE = $this->update(); |
| return $_CACHE; |
| } |
| public function update() { |
| global $DB; |
| $cache = array(); |
| $result = $DB->getAll("SELECT * FROM pre_config"); |
| foreach($result as $row){ |
| $cache[ $row['k'] ] = $row['v']; |
| } |
| $this->save('config', $cache); |
| return $cache; |
| } |
| public function clear($key = 'config') { |
| global $DB; |
| return $DB->exec("UPDATE pre_cache SET v='' WHERE k=:key", [':key'=>$key]); |
| } |
| public function delete($key) { |
| global $DB; |
| return $DB->exec("DELETE FROM pre_cache WHERE k=:key", [':key'=>$key]); |
| } |
| public function clean() { |
| global $DB; |
| $DB->exec("DELETE FROM pre_cache WHERE expire>0 AND expire<'".time()."'"); |
| |
| return true; |
| } |
| } |
|
|