• 技术文章 >后端开发 >php教程

    php中文件缓存实现程序代码_PHP教程

    2016-07-20 11:11:42原创338
    文件缓存就是指把缓存生成一个文件,这个文件可以是php,txt等等文件,当我下载访问时就来判断访问上次生成时间,如果超过了我们指定的时间再重新生成一次,否则就直接调用缓存文件,这样就可以减少了对mysql数据库的查询了。

    文件缓存原理

    1.把需要缓存的数据通过serialize函数序列化后直接保存到文件。在需要使用缓存数据的时候,通过反序列化读入文件内容并复制给需要的变量,然后使用。不经常改动的数据可以写入缓存文件。


    文件缓存实例

    index.php

    代码如下 复制代码

    define('CACHE_ROOT','./');
    include_once('./cache.func.php');
    $file = 'qzp';
    $cacheFile = getCacheFileByID($file,'info/');

    print_R(readCache($cacheFile));

    $info = array(
    'username'=>'qzp',
    'area_name'=>'admin',
    'mp_name'=>'1234',
    'gh_name'=>'5678');
    writeCache($cacheFile,$info);

    cache.func.php文件

    function arrayeval($array, $level = 0) {
    $space = '';
    for($i = 0; $i <= $level; $i++) {
    $space .= "t";
    }
    $evaluate = "Arrayn$space(n";
    $comma = $space;
    foreach($array as $key => $val) {
    $key = is_string($key) ? '''.addcslashes($key, ''').''' : $key;
    $val = !is_array($val) && (!preg_match("/^-?[1-9]d*$/", $val) || strlen($val) > 12) ? '''.addcslashes($val, ''').''' : $val;
    if(is_array($val)) {
    $evaluate .= "$comma$key => ".arrayeval($val, $level + 1);
    } else {
    $evaluate .= "$comma$key => $val";
    }
    $comma = ",n$space";
    }
    $evaluate .= "n$space)";
    return $evaluate;
    }

    function getCacheFileByID($id,$pre='info/',$md5=true){
    if($md5){
    $md5id = md5($id);
    return CACHE_ROOT.'//m.sbmmt.com/m/'.$pre.substr($md5id,0,2).'//m.sbmmt.com/m/'.substr($md5id,2,2).'//m.sbmmt.com/m/'.$id;
    }else{
    return CACHE_ROOT.'//m.sbmmt.com/m/'.$pre.$id;
    }
    }

    function readCache($filename,$time=0){
    if($datas = @file_get_contents($filename)){
    $datas = unserialize($datas);
    if($time < 1 || (time() - $datas['time'] < $time)){
    return $datas['data'];
    }
    }
    return false;
    }

    function writeCache($filename,$data){
    makeDir(dirname($filename));
    if($handle = fopen($filename,'w+')){
    $datas = array('data'=>$data,'time'=>time());
    flock($handle,LOCK_EX);
    $rs = fputs($handle,serialize($datas));
    flock($handle,LOCK_UN);
    fclose($handle);
    if($rs!==false){
    return true;
    }
    }
    return false;
    }

    function makeDir($path)
    {
    if (! file_exists ( $path )) {
    makeDir ( dirname ( $path ) );
    if (! mkdir ( $path, 0777 ))
    die ( '无法创建文件夹' . $path );
    }
    }

    把要缓存的文件序列化下存放起来,当使用的时候反序列化回来使用。

    使用对PHP模板数据进行缓存的工具smarty。smarty将HTML文件缓存成一个静态的HTML页,需要缓存的模板文件可以使用smarty。
    例:

    代码如下 复制代码

    //包含Smarty类库
    require('libs/Smarty.class.php');

    //创建Smarty类的对象
    $smarty = new Smarty;

    //启用缓存
    $smarty->caching = true;

    //指定缓存文件保存的目录
    $smarty->cache_dir = "./cache/";

    //也会把输出保存
    $smarty->display('index.tpl')
    ?>


    www.bkjia.comtruehttp://www.bkjia.com/PHPjc/444641.htmlTechArticle文件缓存就是指把缓存生成一个文件,这个文件可以是php,txt等等文件,当我下载访问时就来判断访问上次生成时间,如果超过了我们指定的...

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:php 文件 缓存 实现 程序 代码 文件 缓存 是指 生成 一个 这个 可以 php txt 等等
    上一篇:PHP无限分类实例程序_PHP教程 下一篇:PHP中利用APC模块实现文件上传进度条_PHP教程
    20期PHP线上班

    相关文章推荐

    精选22门好课,价值3725元,开通VIP免费学习!• PHP开发惯用函数和必须会的函数总结 -带例子• YII 表单验证守则大全• 那些年一行学习的PHP(一)• 页面无动作,五分钟后自动退出系统 • !两端PHP代码的转换
    1/1

    PHP中文网