Maison > Article > Applet WeChat > Le développement PHP WeChat utilise Cache pour résoudre la mise en cache des données
Cet article présente principalement comment résoudre le problème de la mise en cache des données lors du développement de WeChat en PHP. Les partenaires peuvent se référer à Lors de l'utilisation de PHP pour le développement de WeChat, j'ai rencontré le problème de stockage à long terme d'access_token. Dans le passé, j'utilisais le Cache dans le framework
pourset directement et c'est tout. Maintenant qu'il n'y a plus de framework disponible, je dois écrire moi-même un cache pour une utilisation temporaire. Cette classe Cache est utilisée pour mettre en cache certaines données sensibles au temps, telles que le access_token de l' interface de base de WeChat
, le access_token de la vérification de l'authentification Web, etc.Le code ci-dessous Utiliser des fichiers locaux pour mettre en cache les données
La classe Cache ci-dessus a trois opérations : définir, obtenir et supprimer. De plus, vous pouvez également personnaliser le chemin de stockage des fichiers de cache, il suffit de définir l'attribut dir
//测试 $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; } }du Cache.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!