PHP 위 챗 개발 용 Cache 데이터 캐 시 해결

php 로 위 챗 개발 중 accesstoken 이 오래 보관 하 는 문 제 는 예전 에는 프레임 에 있 는 Cache 로 직접 set,get 으로 끝 났 습 니 다.지금 은 프레임 워 크 를 사용 할 수 없어 서 스스로 cache 를 써 서 잠시 사용 할 수 밖 에 없다.
이 Cache 클래스 는 위 챗 기본 인터페이스 의 access 와 같은 실효 성 있 는 데 이 터 를 캐 시 하 는 데 사 용 됩 니 다.token,웹 페이지 Auth 가 검증 한 accesstoken 등
아래 코드 는 로 컬 파일 을 사용 하여 데이터 캐 시 를 합 니 다.

//  
 $cache = new Cache();
 $cache->dir = "../cc/";
 //$cache->setCache("zhang", "zhangsan", 100);
 echo $cache->getCache("zhang");
 //$cache->removeCache("zhang");
 
 $cache->setCache("liu", "liuqi", 100);
 echo $cache->getCache("liu");

 class Cache{
 public $cacheFile = "cache.json"; //  
 public $dir = "./cach2/"; //  

 //  
 public function setCache($name, $val, $expires_time){
 $file = $this->hasFile();
 //      
 $str = file_get_contents($file);
 $arr = json_decode($str, true);
 
 //   ,      
 if(empty($val)){
 unset($arr[$name]);
 }else{
 $arr[$name] = array("value"=>$val, "expires_time"=>$expires_time, "add_time"=>time());
 } 
 //      
 $str = json_encode($arr);
 file_put_contents($file, $str);
 }
 public function getCache($name){
 $file = $this->hasFile();
 
 //      
 $allArr = json_decode($str, true);
 $arr = $allArr[$name];

 if(!$arr || time() > ($arr["expires_time"] + $arr["add_time"])){
 $this->removeCache($name); //    
 return false;
 }
 return $arr["value"];
 }
 public function removeCache($name){
 $this->setCache($name, '', 0);
 }
 
 private function hasFile(){
 //         ,     
 if(!file_exists($this->dir)){
 mkdir($this->dir);
 }
 if(!file_exists($this->dir . $this->cacheFile)){
 touch($this->dir . $this->cacheFile);
 }
 return $this->dir . $this->cacheFile;
 }
}
위의 Cache 류 는 모두 set,get,remove 세 가지 조작 이 있 습 니 다.또한 캐 시 파일 의 저장 경 로 를 사용자 정의 할 수 있 습 니 다.Cache 의 dir 속성 만 설정 하면 됩 니 다.
          이상 은 PHP 위 챗 개발 시 데이터 캐 시 방법 입 니 다.여러분 의 학습 에 도움 이 되 기 를 바 랍 니 다.

좋은 웹페이지 즐겨찾기