侯体宗的博客
  • 首页
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 中国象棋ai
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

PHP文件缓存类实现代码

php  /  管理员 发布于 7年前   132

php中缓存分类数据库缓存,文件缓存和内存缓存,下面我来给各位同学详细介绍PHP文件缓存类实现代码,有需要了解的朋友可参考。
页面缓存类
代码如下 :

cacheCheck();    echo date("Y-m-d H:i:s");    $cache->caching(); */class cache {   //缓存目录   var $cacheRoot    = "./cache/";   //缓存更新时间秒数,0为不缓存   var $cacheLimitTime  = 3;  //缓存文件名   var $cacheFileName  = "";   //缓存扩展名   var $cacheFileExt   = "php";      /*    * 构造函数    * int $cacheLimitTime 缓存更新时间    */   function cache( $cacheLimitTime ) {    if( intval( $cacheLimitTime ) )      $this->cacheLimitTime = $cacheLimitTime;    $this->cacheFileName = $this->getCacheFileName();    ob_start();   }      /*    * 检查缓存文件是否在设置更新时间之内    * 返回:如果在更新时间之内则返回文件内容,反之则返回失败    */   function cacheCheck(){    if( file_exists( $this->cacheFileName ) ) {     $cTime = $this->getFileCreateTime( $this->cacheFileName );     if( $cTime + $this->cacheLimitTime > time() ) {      echo file_get_contents( $this->cacheFileName );      ob_end_flush();      exit;     }    }    return false;   }      /*    * 缓存文件或者输出静态    * string $staticFileName 静态文件名(含相对路径)    */   function caching( $staticFileName = "" ){    if( $this->cacheFileName ) {     $cacheContent = ob_get_contents();     //echo $cacheContent;     ob_end_flush();        if( $staticFileName ) {       $this->saveFile( $staticFileName, $cacheContent );     }        if( $this->cacheLimitTime )      $this->saveFile( $this->cacheFileName, $cacheContent );    }   }      /*    * 清除缓存文件    * string $fileName 指定文件名(含函数)或者all(全部)    * 返回:清除成功返回true,反之返回false    */   function clearCache( $fileName = "all" ) {    if( $fileName != "all" ) {     $fileName = $this->cacheRoot . strtoupper(md5($fileName)).".".$this->cacheFileExt;     if( file_exists( $fileName ) ) {      return @unlink( $fileName );     }else return false;    }    if ( is_dir( $this->cacheRoot ) ) {     if ( $dir = @opendir( $this->cacheRoot ) ) {      while ( $file = @readdir( $dir ) ) {       $check = is_dir( $file );       if ( !$check )       @unlink( $this->cacheRoot . $file );      }      @closedir( $dir );      return true;     }else{      return false;     }    }else{     return false;    }   }      /*    * 根据当前动态文件生成缓存文件名    */   function getCacheFileName() {    return $this->cacheRoot . strtoupper(md5($_SERVER["REQUEST_URI"])).".".$this->cacheFileExt;   }      /*    * 缓存文件建立时间    * string $fileName  缓存文件名(含相对路径)    * 返回:文件生成时间秒数,文件不存在返回0    */   function getFileCreateTime( $fileName ) {    if( ! trim($fileName) ) return 0;       if( file_exists( $fileName ) ) {      return intval(filemtime( $fileName ));    }else return 0;   }      /*    * 保存文件    * string $fileName 文件名(含相对路径)    * string $text   文件内容    * 返回:成功返回ture,失败返回false    */   function saveFile($fileName, $text) {    if( ! $fileName || ! $text ) return false;       if( $this->makeDir( dirname( $fileName ) ) ) {     if( $fp = fopen( $fileName, "w" ) ) {      if( @fwrite( $fp, $text ) ) {       fclose($fp);       return true;      }else {       fclose($fp);       return false;      }     }    }    return false;   }      /*    * 连续建目录    * string $dir 目录字符串    * int $mode  权限数字    * 返回:顺利创建或者全部已建返回true,其它方式返回false    */   function makeDir( $dir, $mode = "0777" ) {    if( ! $dir ) return 0;    $dir = str_replace( "", "/", $dir );        $mdir = "";    foreach( explode( "/", $dir ) as $val ) {     $mdir .= $val."/";     if( $val == ".." || $val == "." || trim( $val ) == "" ) continue;          if( ! file_exists( $mdir ) ) {      if(!@mkdir( $mdir, $mode )){       return false;      }     }    }    return true;   }  }  ?> 

上面使用算是页面缓存了,每次访问页面的时候,都会先检测相应的缓存页面文件是否存在,如果不存在,就连接数据库,得到数据,显示页面并同时生成缓存页面文件,这样下次访问的时候页面文件就发挥作用了。(模板引擎和网上常见的一些缓存类通常有此功能)
给大家介绍一个Memcache缓存,算是内存缓存。
代码如下

connect('localhost', 11211) or die ("Could not connect");$version = $memcache->getVersion();echo "Server's version: ".$version."n";$tmp_object = new stdClass;$tmp_object->str_attr = 'test';$tmp_object->int_attr = 123;$memcache->set('key', $tmp_object, false, 10) or die ("Failed to save data at the server");echo "Store data in the cache (data will expire in 10 seconds)n";$get_result = $memcache->get('key');echo "Data from the cache:n";var_dump($get_result);?>

Memcached是高性能的,分布式的内存对象缓存系统,用于在动态应用中减少数据库负载,提升访问速度。

以上就是本文的全部内容,希望对大家学习php缓存有所帮助。

您可能感兴趣的文章:

  • Thinkphp无限级分类代码
  • 分享10段PHP常用代码
  • 2款PHP无限级分类实例代码
  • PHP防止刷新重复提交页面的示例代码
  • php抓取并保存网站图片的实现代码
  • 一个简单至极的PHP缓存类代码
  • php防止网站被攻击的应急代码
  • php限制文件下载速度的代码
  • PHP代码判断设备是手机还是平板电脑(两种方法)
  • jQuery+Ajax+PHP“喜欢”评级功能实现代码
  • PHP抽奖算法程序代码分享
  • php视频拍照上传头像功能实现代码分享
  • PHP常用的小程序代码段


  • 上一条:
    php需登录的文件上传管理系统
    下一条:
    php多线程实现方法及用法实例详解
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • Laravel从Accel获得5700万美元A轮融资(0个评论)
    • PHP 8.4 Alpha 1现已发布!(0个评论)
    • 用Time Warden监控PHP中的代码处理时间(0个评论)
    • 在PHP中使用array_pop + yield实现读取超大型目录功能示例(0个评论)
    • Property Hooks RFC在PHP 8.4中越来越接近现实(0个评论)
    • 近期文章
    • 在windows10中升级go版本至1.24后LiteIDE的Ctrl+左击无法跳转问题解决方案(0个评论)
    • 智能合约Solidity学习CryptoZombie第四课:僵尸作战系统(0个评论)
    • 智能合约Solidity学习CryptoZombie第三课:组建僵尸军队(高级Solidity理论)(0个评论)
    • 智能合约Solidity学习CryptoZombie第二课:让你的僵尸猎食(0个评论)
    • 智能合约Solidity学习CryptoZombie第一课:生成一只你的僵尸(0个评论)
    • 在go中实现一个常用的先进先出的缓存淘汰算法示例代码(0个评论)
    • 在go+gin中使用"github.com/skip2/go-qrcode"实现url转二维码功能(0个评论)
    • 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf分页文件功能(95个评论)
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 近期评论
    • 122 在

      学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..
    • 123 在

      Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..
    • 原梓番博客 在

      在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..
    • 博主 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..
    • 1111 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
    • 2016-10
    • 2016-11
    • 2017-06
    • 2017-07
    • 2017-08
    • 2017-09
    • 2017-11
    • 2017-12
    • 2018-01
    • 2018-02
    • 2018-03
    • 2020-03
    • 2020-04
    • 2020-05
    • 2020-06
    • 2020-07
    • 2020-09
    • 2021-02
    • 2021-03
    • 2021-04
    • 2021-05
    • 2021-06
    • 2021-07
    • 2021-08
    • 2021-09
    • 2021-10
    • 2021-11
    • 2021-12
    • 2022-01
    • 2022-02
    • 2022-05
    • 2022-06
    • 2022-07
    • 2022-08
    • 2022-09
    • 2022-10
    • 2022-11
    • 2022-12
    • 2023-01
    • 2023-02
    • 2023-03
    • 2023-04
    • 2023-05
    • 2023-06
    • 2023-07
    • 2023-08
    • 2023-09
    • 2023-10
    • 2023-11
    • 2023-12
    • 2024-01
    • 2024-02
    • 2024-03
    • 2024-04
    • 2024-05
    • 2024-06
    • 2024-07
    • 2024-09
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客