PHP文件缓存类实现代码_php技巧

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

<?php
/*include( "cache.php" );  

$cache = new cache(30);
$cache->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缓存,算是内存缓存。
代码如下

<?php
$memcache = new Memcache;
$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缓存有所帮助。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索php文件缓存类
, php代码缓存
, php文件缓存
, php生成缓存文件
thinkphp文件缓存
php如何实现缓存、php实现memcached缓存、php实现缓存、php清除缓存代码、php代码缓存,以便于您获取更多的相关知识。

时间: 2024-11-04 19:32:15

PHP文件缓存类实现代码_php技巧的相关文章

PHP Memcached + APC + 文件缓存封装实现代码_php技巧

使用方法: Memcached 复制代码 代码如下: $cache = new Cache_MemCache(); $cache->addServer('www1'); $cache->addServer('www2',11211,20); // this server has double the memory, and gets double the weight $cache->addServer('www3',11211); // Store some data in the c

一个简洁实用的PHP缓存类完整实例_php技巧

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

php的XML文件解释类应用实例_php技巧

本文实例讲述了php的XML文件解释类及其用法,是非常实用的技巧.分享给大家供大家参考.具体如下: XMLParser.class.php类文件如下: <?php /** XML 文件分析类 * Date: 2013-02-01 * Author: fdipzone * Ver: 1.0 * * func: * loadXmlFile($xmlfile) 读入xml文件输出Array * loadXmlString($xmlstring) 读入xmlstring 输出Array */ class

PHP文件缓存类示例分享_php实例

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

防止文件缓存的js代码_javascript技巧

复制代码 代码如下: <script language="javascript" type="text/javascript"> //防止js文件缓存下来,以后更新时不再需要用户重新删除IE文件等操作. var now=new Date(); var number = now.getYear().toString()+now.getMonth().toString()+now.getDate().toString()+now.getHours().toS

PHP取二进制文件头快速判断文件类型的实现代码_php技巧

一般我们都是按照文件扩展名来判断文件类型,但是这个很不靠谱,轻易就通过修改扩展名来躲避了,一般必须要读取文件信息来识别,PHP扩展中提供了类似 exif_imagetype 这样的函数读取图片类的文件类型,但是很多时候扩展不一定安装了,有时候就需要自己来实现识别文件类型的工作. 下面代码就展示了自己通过读取文件头信息来识别文件的真实类型. 复制代码 代码如下: <?php     $files = array(        'c:\1.jpg',        'c:\1.png',     

PHP 处理图片的类实现代码_php技巧

复制代码 代码如下: <?php /** * author:yagas * email:yagas60@21cn.com */ class Image { /** 类保护变量 */ protected $th_width = 100; protected $th_height = 50; protected $quality = 85; //图片质量 protected $transparent = 50; //水印透明度 protected $background = "255,255,

简单的pgsql pdo php操作类实现代码_php技巧

核心代码: /* *pgsql类 */ class pgdb { public $pdo; public static $PDOInstance; public $config; public $data; public $filed = '*'; public $table; public $limit; public $order; public $where; public $left; const LOGIN = 7; const USER = 1; const GROUP = 2; c

使用bcompiler对PHP文件进行加密的代码_php技巧

使用说明: //载入函式 include_once('phpCodeZip.php'); //建立加密文件(sourceDir要加密的php文件目录,targetDir加密后的文件目录) $encryption = new PhoCodeZip('sourceDir','targetDir'); //执行行加密 $encryption->zip(); phpCodeZip.php源码下载 phpCodeZip.rar phpCodeZip.php源码内容 复制代码 代码如下: /* * @lic