Heim > php教程 > php手册 > PHP实现的简单缓存类

PHP实现的简单缓存类

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Freigeben: 2016-06-06 19:50:13
Original
919 Leute haben es durchsucht

这篇文章主要介绍了PHP实现的简单缓存类,实例分析了php缓存文件的定义及使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下

本文实例讲述了PHP实现的简单缓存类。分享给大家供大家参考。具体如下:

cache.inc.php:

dir_isvalid($dir)) { $this->dir = $dir; $this->lifetime = $lifetime; $this->ext = '.Php'; $this->cacheid = $this->getcacheid(); } } /** * 检查缓存是否有效 */ private function isvalid() { if (!file_exists($this->cacheid)) return false; if (!(@$mtime = filemtime($this->cacheid))) return false; if (mktime() - $mtime > $this->lifetime) return false; return true; } /** * 写入缓存 * $mode == 0 , 以浏览器缓存的方式取得页面内容 * $mode == 1 , 以直接赋值(通过$content参数接收)的方式取得页面内容 * $mode == 2 , 以本地读取(fopen ile_get_contents)的方式取得页面内容(似乎这种方式没什么必要) */ public function write($mode=0,$content='') { switch ($mode) { case 0: $content = ob_get_contents(); break; default: break; } ob_end_flush(); try { file_put_contents($this->cacheid,$content); } catch (Exception $e) { $this->error('写入缓存失败!请检查目录权限!'); } } /** * 加载缓存 * exit() 载入缓存后终止原页面程序的执行,缓存无效则运行原页面程序生成缓存 * ob_start() 开启浏览器缓存用于在页面结尾处取得页面内容 */ public function load() { if ($this->isvalid()) { echo "This is Cache. "; //以下两种方式,哪种方式好????? require_once($this->cacheid); //echo file_get_contents($this->cacheid); exit(); } else { ob_start(); } } /** * 清除缓存 */ public function clean() { try { unlink($this->cacheid); } catch (Exception $e) { $this->error('清除缓存文件失败!请检查目录权限!'); } } /** * 取得缓存文件路径 */ private function getcacheid() { return $this->dir.md5($this->geturl()).$this->ext; } /** * 检查目录是否存在或是否可创建 */ private function dir_isvalid($dir) { if (is_dir($dir)) return true; try { mkdir($dir,0777); } catch (Exception $e) { $this->error('所设定缓存目录不存在并且创建失败!请检查目录权限!'); return false; } return true; } /** * 取得当前页面完整url */ private function geturl() { $url = ''; if (isset($_SERVER['REQUEST_URI'])) { $url = $_SERVER['REQUEST_URI']; } else { $url = $_SERVER['Php_SELF']; $url .= empty($_SERVER['QUERY_STRING'])?'':'?'.$_SERVER['QUERY_STRING']; } return $url; } /** * 输出错误信息 */ private function error($str) { echo '

'.$str.'
'; } } ?>

demo.php:

load(); //装载缓存,缓存有效则不执行以下页面代码 //页面代码开始 echo date('H:i:s jS F'); //页面代码结束 $cache->write(); //首次运行或缓存过期,生成缓存 //Demo2: require_once('cache.inc.php'); $cachedir = './Cache/'; //设定缓存目录 $cache = new Cache($cachedir,10); //省略参数即采用缺省设置, $cache = new Cache($cachedir); if ($_GET['cacheact'] != 'rewrite') //此处为一技巧,通过xx.Php?cacheact=rewrite更新缓存,以此类推,还可以设定一些其它操作 $cache->load(); //装载缓存,缓存有效则不执行以下页面代码 //页面代码开始 $content = date('H:i:s jS F'); echo $content; //页面代码结束 $cache->write(1,$content); //首次运行或缓存过期,生成缓存 //Demo3: require_once('cache.inc.php'); define('CACHEENABLE',true); if (CACHEENABLE) { $cachedir = './Cache/'; //设定缓存目录 $cache = new Cache($cachedir,10); //省略参数即采用缺省设置, $cache = new Cache($cachedir); if ($_GET['cacheact'] != 'rewrite') //此处为一技巧,通过xx.Php?cacheact=rewrite更新缓存,以此类推,还可以设定一些其它操作 $cache->load(); //装载缓存,缓存有效则不执行以下页面代码 } //页面代码开始 $content = date('H:i:s jS F'); echo $content; //页面代码结束 if (CACHEENABLE) $cache->write(1,$content); //首次运行或缓存过期,生成缓存 ?>

希望本文所述对大家的php程序设计有所帮助。

Verwandte Etiketten:
php
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Aktuelle Ausgaben
PHP-Datenerfassung?
Aus 1970-01-01 08:00:00
0
0
0
PHP-Erweiterung intl
Aus 1970-01-01 08:00:00
0
0
0
Wie man PHP gut lernt
Aus 1970-01-01 08:00:00
0
0
0
Mehrere PHP-Versionen
Aus 1970-01-01 08:00:00
0
0
0
Beliebte Empfehlungen
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage