搜尋
首頁php教程php手册PHP文件缓存类实现代码,

PHP文件缓存类实现代码,

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

<&#63;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;  
 }  
}  
&#63;> 

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

<&#63;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);
&#63;>

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

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

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 個月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
1 個月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
1 個月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.聊天命令以及如何使用它們
1 個月前By尊渡假赌尊渡假赌尊渡假赌

熱工具

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

Dreamweaver Mac版

Dreamweaver Mac版

視覺化網頁開發工具