• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

PHP开发APP接口学习笔记与总结-静态缓存

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

存储静态缓存即把缓存写入文件。

file.php

<?php
class Cache{
    //静态缓存文件后缀名
    const EXT = 'txt';
    //定义缓存文件存放路径
    private $_dir;
    public function __construct(){
        $this->_dir = dirname(__FILE__).'/files/';
    }

    public function cacheData($k,$v = '',$path = ''){
        //文件名
        $filename = $this->_dir.$path.$k.'.'.self::EXT;
        //$v不为‘’:存储缓存或者删除缓存
        if($v !== ''){

            //删除缓存
            if(is_null($v)){
                return @unlink($filename);
            }

            //存储缓存
            $dir = dirname($filename);
            if(!is_dir($dir)){
                mkdir($dir,0777);
            }
            //把$v转成string类型
            return file_put_contents($filename,json_encode($v));
        }

        //读取缓存
        if(!is_file($filename)){
            return false;
        }else{
            return json_decode(file_get_contents($filename),true);
        }
    }
}

testfile.php

<?php
require 'file.php';

$data = array(
    'id'=>1,
    'name'=>'Mary',
    'type'=>array(1,3,6)
);

$file_cache = new Cache();
//存储缓存
if($file_cache->cacheData('index_cache',$data)){
    echo 'success';
}else{
    echo 'error';
}

//读取缓存
if($con = $file_cache->cacheData('index_cache')){
    var_dump($con);
}else{
    echo 'error';
}

//删除缓存
if($con = $file_cache->cacheData('index_cache',null)){
    echo 'delete success';
}else{
    echo 'error';
}

 ======

稍微修改一下,设置n分钟的缓存,超过n分钟则重新生成缓存,否则从缓存中读取数据。

在file.php 中,存储数据时把文件名和文件修改时间也同时存入缓存数据

<?php
class Cache{
    //静态缓存文件后缀名
    const EXT = 'txt';
    //定义缓存文件存放路径
    private $_dir;
    public function __construct(){
        $this->_dir = dirname(__FILE__).'/files/';
    }

    public function cacheData($k,$v = '',$path = ''){
        //文件名
        $filename = $this->_dir.$path.$k.'.'.self::EXT;
        //$v不为‘’:存储缓存或者删除缓存
        if($v !== ''){

            //删除缓存
            if(is_null($v)){
                return @unlink($filename);
            }

            //存储缓存
            $dir = dirname($filename);
            if(!is_dir($dir)){
                mkdir($dir,0777);
            }
            //把$v转成string类型
            $_return = array(
                'filename' => $filename,
                'filetime' => @filemtime($filename), //文件创建(修改)时间
                'con' => json_encode($v)
            );
            return file_put_contents($filename,json_encode($_return));
        }

        //读取缓存
        if(!is_file($filename)){
            return false;
        }else{
            return json_decode(file_get_contents($filename),true);
        }
    }
}

testfile.php

<?php
require 'file.php';

$data = array(
    'id'=>1,
    'name'=>'Mary',
    'type'=>array(1,3,6)
);

$file_cache = new Cache();

//设置5min的缓存,超过30s则重新生成缓存,否则从缓存中读取数据
$k = 'index_cache';
$countdown = 5*60;
$con = $file_cache->cacheData($k);

if($con){ //如果能够读取缓存
    if(time()-$con['filetime'] > 30){
        $file_cache->cacheData($k,$data);
        var_dump($data);
    }else{
        $res = $file_cache->cacheData($k);
        if($res){
            var_dump(json_decode($res['con'],true));
        }    
    }
}else{    //如果缓存不存在则创建缓存
    $file_cache->cacheData($k,$data);
    var_dump($data);
}

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
phpimagicksvg转成jpg发布时间:2022-07-12
下一篇:
PHP调用wsdl接口实例化SoapClient抛出异常发布时间:2022-07-12
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap