2017-12-22经典实用的PHP缓存类库

您现在的位置是: 首页 > 缓存技术 > 经典实用的PHP缓存类库

417次阅读

php缓存技术是在开发过程中非常的常用和重要,缓存技术可减轻服务器负载、降低网络拥塞、增强www可扩展性,其基本思想是利用客户访问的时间局部性,将客户访问过的内容在Cache中存放一个副本,当该内容下次被访问时,不必连接到驻留网站,而是由Cache中保留的副本提供。


一、PHP缓存类库代码

<?php


class Cache{

    // 缓存的文件路径
    private $basePth;

    /**
     * Cache constructor.
     * @param string $basePth 文件路径
     */
    public function Cache($basePth='cache')
    {
        $this->basePth = $basePth;
    }


    /**
     * @param $key 键值
     * @param $con 存入的内容
     * @param $ext 后缀
     * @return int
     */
    public function setCache($key,$con,$ext='.php')
    {
        $path = $this->getPath($key,$ext);
        return file_put_contents($path,$con);
    }


    //参数 time 表示cache的存活期,单位 秒,默认无限期
    /**
     * @param $key 键值
     * @param int $time 时间
     * @return bool|string
     */
    public function getCache($key,$ext='.php',$time=0)
    {
        $path = $this->getPath($key,$ext);
        if(!is_file($path))return false;
        if($time&&filemtime($path)+$time<time())
        {  //过期删除
            unlink($path);
            return false;
        }

        return file_get_contents($path);

    }


    /**
     * @param $key 键值
     * @param $ext 缓存文件后缀
     * @return string
     * @desc 得到路径
     */
    private function getPath($key,$ext='.php')
    {
        $key = md5($key);
        $keyDir = $this->basePth.'/'.substr($key,0,1).'/'.substr($key,1,1).'/';
        $this->mkdirs($keyDir);
        return $keyDir.$key.$ext;
    }


    //创造指定的多级路径
    //参数 要创建的路径 文件夹的权限
    //返回值 布尔值
    private  function mkdirs($dir, $mode = 0755)
    {
        if (is_dir($dir) || @mkdir($dir,$mode)) return true;
        if (!$this->mkdirs(dirname($dir),$mode)) return false;
        return @mkdir($dir,$mode);
    }

}



二、设置缓存


<?php

$cache = new Cache();
// 把百度的网页存入变量 $html_str
$html_str = file_get_contents('https://www.baidu.com/');
// 把抓取的百度变量存入键值 baidu ,缓存的文件后缀为 html
echo $cache->setCache('baidu',$html_str, '.html').'<br/>';


经典实用的PHP缓存类库


三、读取缓存


<?php

// 读取存入的百度数据
echo $cache->getCache('baidu','.html');



四、直接读取缓存的文件


经典实用的PHP缓存类库