00001 <?php
00023 class FileCache implements CacheInterface
00024 {
00032 protected static function _get_filename($id, $group)
00033 {
00034 return 'cache_'.md5($id).'.'.md5($group);
00035 }
00043 public static function get($id, $group)
00044 {
00045 $filename = APP_PATH . 'temp/cache/'.self::_get_filename($id, $group);
00046 if(file_exists($filename)){
00047 $fh = fopen($filename, 'r');
00048
00049 $lifetime = trim(fgets($fh));
00050 if($lifetime == 'undefined' || $lifetime >= time())
00051 $data = stream_get_contents($fh);
00052 else
00053 $data = null;
00054
00055 fclose($fh);
00056 return $data;
00057 }
00058 return null;
00059 }
00069 public static function save($id, $group, $value, $lifetime)
00070 {
00071 if($lifetime == null)
00072 $lifetime = 'undefined';
00073 return file_put_contents(APP_PATH . 'temp/cache/'.self::_get_filename($id, $group), "$lifetime\n$value");
00074 }
00081 public static function clean($group=false)
00082 {
00083 $pattern = $group ? APP_PATH . 'temp/cache/'.'*.'.md5($group) : APP_PATH . 'temp/cache/'.'*';
00084 foreach (glob($pattern) as $filename) {
00085 if(!unlink($filename)) {
00086 return false;
00087 }
00088 }
00089 }
00097 public static function remove($id, $group)
00098 {
00099 return unlink(APP_PATH . 'temp/cache/'.self::_get_filename($id, $group));
00100 }
00101 }