【PHP学习】静态文件缓存综合小案例以及一些函数的注意点

静态缓存技术

保存在磁盘上的静态文件,用PHP生 成数据到静态文件中。原理如下:

php中的缓存操作

  1. 生成缓存
  2. 获取缓存
  3. 删除缓存

甩一段别人的代码

class Response{
	static public function datas($code,$info,$data,$type='json'){
		switch ($type) {
			case 'json':
				# code...
			return self::json($code,$info,$data);


			break;
			case 'xml':
			return self::xml($code,$info,$data);

			break;
			case "array":
			$arr=array(
				'code'=>$code,
				'info'=>$info,
				'data'=>$data,

				);
			var_dump($arr);

			break;
			
			default:
				# code...
				break;
		}
	}
	// xml
	static public function xml($code,$info,$data){
		if (!is_numeric($code)) {  //is_numeric() 函数用于检测变量是否为数字或数字字符串
			# code...
			return false;
		}

		if ($info && $data) {

			$str='	<?xml version="1.0" encoding="UTF-8">
					<item>
						<code>'.$code.'</code>
						<info>'.$info.'</info>
						<data>
							';
					$str.=self::item($data);
			$str.='
						</data>
					</item> ';

			return $str;
		}else{
			return false;
		}

	}

	//多维数组,使用递归

	static public function item($data){
		$str="";
			# code...
		foreach ($data as $key => $value) {
				# code...
			if (is_array($value)) {
				# code...
				$str.="<data$key>".self::item($value)."</data$key>\n";


			
			}else{
				$str.="<$key>{$value}</$key>";
			}

		}

			return $str;
		
	}
	// json

	static public function json($code,$info,$data){

		if (!is_numeric($code)) {
			# code...
			return false;
		}
		if ($info && $data) {
			# code...
			$arr=array(
				'code'=>$code,
				'info'=>$info,
				'data'=>$data,

				);
			return json_encode($arr);
		}else{
			return false;
		}

	}
}

大概的逻辑是:

通过调用类里面的CacheData函数

  1. 将缓存文件的路径赋值给$path
  2. 判断一下缓存文件的路径目录是否存在,不在的话创建一个
  3. 判断调用此类的CacheData函数是否有出入数据  
  •             若有

         将缓存的时间+数据+时间戳存入缓存文件中

  •             若没有

        判断文件是否存在、通过判断文件传入的是不是null决定是否删除缓存

     4。判断文件是不是过期了 没过期就返回缓存文件里的一部分

需要注意的函数

    sprintf('%010d',$time):例如给$time=100 通过函数会0000000100,即不足十位数用0补全

    file_put_contents($this->path, $str);,即使.txt文件不存在,也可以用这个函数,函数会在指定目录下创建指定文件,并存入数据。

   is_null()具体如下: 在本类中你可以给调用的函数$data赋空值,但是赋null,则会删除缓存。

substr($datas, 0,10);  //截取字符串里0~10位

substr($datas, -10); //截取倒数10位

substr($datas,10,-10); //从第十位到倒数第十位。

猜你喜欢

转载自blog.csdn.net/cc_Salted_fish/article/details/83578636