简单实用的网站PHP缓存类实例

缓存技术在实际使用当中应用非常广泛,可以有效减轻对服务器数据库的访问压力,提高运行速度。目前很多CMS内容管理系统中频繁使用缓存机制来提高系统运行的效率。本文以一个简单实用的缓存类为例,帮助大家参考下缓存的机制与写法。

缓存文件cache.php代码如下:

<?php
/*
用户需要事先定义的常量:
_CachePath_    模板缓存路径
_CacheEnable_    自动缓存机制是否开启,未定义或为空,表示关闭自动缓存机制
_ReCacheTime_    自动重新缓存间隔时间,单位为秒,未定义或为空,表示关闭自动重新缓存
*/
class cache
{
  var $cachefile;
  var $cachefilevar;
  function cache()
  {
    //生成当前页的Cache组文件名 $this->cachefilevar 及文件名 $this->cachefile
    //动态页的参数不同对应的Cache文件也不同,但是每一个动态页的所有Cache文件都有相同的文件名,只是扩展名不同
    $s=array(".","/");$r=array("_","");
    $this->cachefilevar=str_replace($s,$r,$_SERVER["SCRIPT_NAME"])."_".$_GET[_ActionVar_];
    $this->cachefile=$this->cachefilevar.".".md5($_SERVER["REQUEST_URI"]);
  }
  //删除当前页/模块的缓存
  function delete()
  {
    //删除当前页的缓存
    $d = dir(_CachePath_);
    $strlen=strlen($this->cachefilevar);
    //返回当前页的所有太原264医院Cache文件组
    while (false !== ($entry = $d->read()))
    {
      if (substr($entry,0,$strlen)==$this->cachefilevar)
      {
        if (!unlink(_CachePath_."/".$entry)) {echo "Cache目录无法写入";exit;}
      }
    }
  }
  //判断是否已Cache过,以及是否需要Cache
  function check()
  {
    //如果设置了缓存更新间隔时间 _ReCacheTime_
    if (_ReCacheTime_+0>0)
    {
      //返回当前页Cache的最后更新时间
      $var=@file(_CachePath_."/".$this->cachefilevar);$var=$var[0];
      //如果更新时间超出更新间隔时间则删除Cache文件
      if (time()-$var>_ReCacheTime_)
      {
        $this->delete();$ischage=true;
      }
    }
    //返回当前页的Cache
    $file=_CachePath_."/".$this->cachefile;
    //判断当前页Cache是否存在 且 Cache功能是否开启
    return (file_exists($file) and _CacheEnable_ and !$ischange);
  }
  //读取Cache
  function read()
  {
    //返回当前页的Cache
    $file=_CachePath_."/".$this->cachefile;
    //读取Cache文件的内容
    if (_CacheEnable_) return readfile($file);
    else return false;
  }
  //生成Cache
  function write($output)
  {
    //返回当前页的Cache
    $file=_CachePath_."/".$this->cachefile;
    //如果Cache功能开启
    if (_CacheEnable_)
    {
      //把输出的内容写入Cache文件
      $fp=@fopen($file,'w');
      if (!@fputs($fp,$output)) {echo "模板Cache写入失败";exit;}
      @fclose($fp);
      //如果设置了缓存更新间隔时间 _ReCacheTime_
      if (_ReCacheTime_+0>0)
      {
        //更新当前页Cache的最后更新时间
        $file=_CachePath_."/".$this->cachefilevar;
        $fp=@fopen($file,'w');
        if (!@fwrite($fp,time())) {echo "Cache目录无法写入";exit;}
        @fclose($fp);
      }
    }
  }
}
?>

缓存类的使用:

<?php
  define("_CachePath_","./cache/");
  define("_CacheEnable_","1");
  define("_ReCacheTime_","43200");
  include('cache.php');
  $cache=new cache();
  if ($cache->check())
  {
    $template=$cache->read();
  }
  else
  {
    ob_start();
    ob_implicit_flush(0);
?>
  此处为页面内容。。。。
<?php
    $template = ob_get_contents();
    $cache->write($template);
  }
?>
(0)

相关推荐

  • 一个简洁实用的PHP缓存类完整实例

    本文完整描述了一个简洁实用的PHP缓存类,可用来检查缓存文件是否在设置更新时间之内.清除缓存文件.根据当前动态文件生成缓存文件名.连续创建目录.缓存文件输出静态等功能.对于采用PHP开发CMS系统来说,离不开对缓存的处理,合理利用好缓存可有效的提高程序执行效率. php缓存类文件完整代码如下: <?php /* * 缓存类 cache */ class cache { //缓存目录 var $cacheRoot = "./cache/"; //缓存更新时间秒数,0为不缓存 var

  • 简单的php缓存类分享 php缓存机制

    复制代码 代码如下: <?phpclass Cache { private $dir = "data/cache/";//定义缓存目录  private $key='c_a_sss'; // 文件名md5加密密钥 function set_dir($dirpath) {  $this->dir=$dirpath;  $this->make_dir($this->dir); } function read($key,$minutes=1) {  $filename

  • php cache类代码(php数据缓存类)

    如果访问量大的话会给数据库造成很大的负担,所以对于变化不经常的内容要做好php 数据cache(缓存)是十分必要的,我做了一个简单的php"文件缓存"的类,希望对大家有所帮助. 思路是这样的: 对于一般的变量,把该变量变成php语言的格式,写到文件中,用时只要include这个文件就相当于加载了cache了: 对于array型的变量,把array转化为php语言定义array的字符串,写到文件中,用时也只要include就相当于加载了cache了: 缓存cache时间上的控制,通过获取

  • php文件缓存类汇总

    本文实例讲述了php的文件缓存类.分享给大家供大家参考.具体分析如下: 缓存类是我们开发应用中会常用使用到的功能,下面就来给大家整理几个php文件缓存类了,各个文件缓存类写法不同,但在性能上会有区别,有兴趣测试的朋友可测试一下这些缓存类. 例1 复制代码 代码如下: <?php $fzz = new fzz_cache; $fzz->kk = $_SERVER; //写入缓存 //$fzz->set("kk",$_SERVER,10000); //此方法不与类属性想冲

  • 常见php数据文件缓存类汇总

    本文实例汇总了常见php数据文件缓存类.分享给大家供大家参考.具体分析如下: 数据文件缓存的做法我们常用的有php文件缓存与利用memcache来缓存数据,下面面我分别总结了memcache缓存数据与数据文件缓存.感兴趣的朋友可以参考一下. 1.对于一般的变量,把该变量变成php语言的格式,写到文件中,用时只要include这个文件就相当于加载了cache了. 2.对于array型的变量,把array转化为php语言定义array的字符串,写到文件中,用时也只要include就相当于加载了cac

  • php文件缓存类用法实例分析

    本文实例讲述了php文件缓存类用法.分享给大家供大家参考.具体如下: <?php /** * 简单的文件缓存类 * */ class XZCache{ // default cache time one hour var $cache_time = 3600; // default cache dir var $cache_dir = './cache'; public function __construct($cache_dir=null, $cache_time=null){ $this-

  • PHP文件缓存类示例分享

    复制代码 代码如下: <?php     /**      * @desc 文件缓存      */     class Cache{         const C_FILE = '/Runtime/';         private $dir = '';         const EXT = '.tpl';         private $filename = '';         public function __construct($dir = ''){            

  • 简单实用的网站PHP缓存类实例

    缓存技术在实际使用当中应用非常广泛,可以有效减轻对服务器数据库的访问压力,提高运行速度.目前很多CMS内容管理系统中频繁使用缓存机制来提高系统运行的效率.本文以一个简单实用的缓存类为例,帮助大家参考下缓存的机制与写法. 缓存文件cache.php代码如下: <?php /* 用户需要事先定义的常量: _CachePath_ 模板缓存路径 _CacheEnable_ 自动缓存机制是否开启,未定义或为空,表示关闭自动缓存机制 _ReCacheTime_ 自动重新缓存间隔时间,单位为秒,未定义或为空,

  • 简单实用的PHP文本缓存类实例

    缓存在实际使用当中应用很广泛,可以减轻对服务器数据库的访问,提高运行速度.目前很多CMS内容管理系统中频繁使用缓存机制来提高系统运行的效率.下面是一个写得不错的缓存类,可以参考下缓存的机制与写法. cache.inc.php <?php class Cache { /** * $dir : 缓存文件存放目录 * $lifetime : 缓存文件有效期,单位为秒 * $cacheid : 缓存文件路径,包含文件名 * $ext : 缓存文件扩展名(可以不用),这里使用是为了查看文件方便 */ pr

  • 简单实用的PHP防注入类实例

    本文实例讲述了简单实用的PHP防注入类.分享给大家供大家参考.具体如下: PHP防注入注意要过滤的信息基本是get,post,然后对于sql就是我们常用的查询,插入等等sql命令了,下面我给各位整理两个简单的例子,希望这些例子能给你网站带来安全. PHP防注入类代码如下: 复制代码 代码如下: <?php /**  * 参数处理类  * @author JasonWei  */ class Params {     public $get = array();       public $pos

  • winform简单缓存类实例

    本文实例讲述了winform简单缓存类.分享给大家供大家参考.具体如下: public partial class Form3 : Form { //缓存类 System.Web.Caching.Cache cache; public Form3() { InitializeComponent(); string SQL = "select top 1000 * from infomation"; DataTable datatable = DBHelper.GetDataTable(

  • php实现专业获取网站SEO信息类实例

    本文实例讲述了php实现专业获取网站SEO信息类.分享给大家供大家参考.具体如下: 这个seo类的功能包括: - 检查指定的网站响应 - 获取从该网站主页的语言和其他meta标签数据的 - 获取网站的导入链接,从Alexa的流量排名 - 获取网站的导入链接,由谷歌索引的网页数量 - 获取网站的信任,从WOT排名. - 获取,因为它是第一个注册的网站域名年龄 - 获取的Twitter网站页面的数量 - 获取的Facebook链接的网站页面 - 获取网站谷歌网页速度等级 - 获取网站的谷歌网页排名

  • PHP实现的简单缓存类

    本文实例讲述了PHP实现的简单缓存类.分享给大家供大家参考.具体如下: cache.inc.php: <?php class Cache { /** * $dir : 缓存文件存放目录 * $lifetime : 缓存文件有效期,单位为秒 * $cacheid : 缓存文件路径,包含文件名 * $ext : 缓存文件扩展名(可以不用),这里使用是为了查看文件方便 */ private $dir; private $lifetime; private $cacheid; private $ext;

  • Ajax的简单实用实例代码

    我将实现一个简单的Ajax页面无刷新进行用户验证案例: 效果如下图: 实现主要过程: 在UsersAction类中的checkUser方法中接收并验证前台的表单数据,针对不同情况,返回一个状态码code给jsp页面,然后在ajax1.jsp中通过$.post方法接受后台传递过来的状态码 做出不同的响应. 具体代码如下: 1.实体类 package com.bean; import java.io.Serializable; public class Users implements Serial

  • js实现简单实用的AJAX完整实例

    本文实例讲述了js实现简单实用的AJAX的方法.分享给大家供大家参考,具体如下: //版权归属 WUJXPING //ajax 1.2 //更新2012-2-20 //1.异步数据加载可以进行加载方式get,post的设定 //2.异步同步模式的属性设定 //3.数据加载自动超时设置 //4.***数据加载事件的添加,通过事件可以进行服务器数据的实时处理 //5.增加回调函数中用户自定义参数this.e //6.增加ajax反复提交控制,只需将ajax对象定义为全局变量,每次提交都会进行等待上次

  • PHP实现简单实用的验证码类

    本文实例讲述了PHP实现简单实用的验证码类.分享给大家供大家参考.具体如下: <?php /** * @version 1.0 * @author bolted snail * @date 2011-10-15 * @PHP验证码类 * 使用方法: * $image=new Captcha(); * $image->config('宽度','高度','字符个数','验证码session索引'); * $image->create();//这样就会向浏览器输出一张图片 * //所有参数都可

随机推荐