1. 程式人生 > >【PHP學習】靜態檔案快取綜合小案例以及一些函式的注意點

【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); //從第十位到倒數第十位。