Главная > Заметки, Сделай сам, Статьи > Новая версия FILEMEMCACHE

Новая версия FILEMEMCACHE

Код подкатом...

/**
 * Получает путь до файла кеша по ID
 *
 * @param unknown_type $var
 * @return unknown
 */
function filememcache_getdir($var)
	{
	$dir = $_SERVER['DOCUMENT_ROOT'].'/filememcache/';
	$varmd = substr(md5($var),0,3);
	$drs = implode('/',array($varmd{0},$varmd{1},$varmd{2}));
	$var_file = str_replace('//','/',$dir.'/'.$drs.'/');

	//chmod($var_file.$var,0666);

	return $var_file.$var;
	}
/**
 * Получаем значение из файл-мемкеша по ID
 *
 * @param unknown_type $var
 * @return unknown
 */
function filememcache_get($var)
	{
	$dir = $_SERVER['DOCUMENT_ROOT'].'/filememcache/';
	$varmd = substr(md5($var),0,3);
	$drs = implode('/',array($varmd{0},$varmd{1},$varmd{2}));
	$var_file = str_replace('//','/',$dir.'/'.$drs.'/');
	if (!is_dir($var_file)) mkdir($var_file,0777,true);
	if (is_file($var_file.$var))
		{
		$fn = fopen($var_file.$var, 'r');
		if (filesize($var_file.$var)>0)
			$data = fread($fn, filesize($var_file.$var));
		fclose($fn);
		//chmod($var_file.$var,0666);

		$tmp = explode("<-cache->",$data);
		$time = $tmp[0];
		$val = $tmp[1];
		$type = isset($tmp[2]) ? $tmp[2] : 'string';
		if ($type=='array')
			$val = unserialize($val);
		if ($time>time())
			return $val;
		else

			return null;
		}
	else

		return null;
	}
/**
 * Устанавливаем значение в файл-кеш по ID со временем жизни
 *
 * @param unknown_type $var
 * @param unknown_type $val
 * @param unknown_type $time
 */
function filememcache_set($var, $val, $time)
	{
	$dir = $_SERVER['DOCUMENT_ROOT'].'/filememcache/';
	$varmd = substr(md5($var),0,3);
	$drs = implode('/',array($varmd{0},$varmd{1},$varmd{2}));
	$var_file = str_replace('//','/',$dir.'/'.$drs.'/');
	if (!is_dir($var_file)) mkdir($var_file,0777,true);
	$type = gettype($val);
	if (is_array($val))
		$val = serialize($val);
	$fn = fopen($var_file.$var,'w+');
	fwrite($fn, (time() + $time)."<-cache->".$val."<-cache->".$type);
	fclose($fn);
	chmod($var_file.$var,0666);
	}

Заметки, Сделай сам, Статьи , ,

  1. ямаха
    02 Сен 2009 из 15:19 | #1

    Пасибо)

  1. Трекбеков пока нет.