一个PHP缓存类代码(附详细说明)_php技巧

复制代码 代码如下:

<?php
define('CACHE_ROOT', dirname(__FILE__).'/cache'); //缓存存放目录
define('CACHE_TIME', 1800);//缓存时间 单位秒
define('CACHE_FIX','.html');
$CacheName=md5($_SERVER['REQUEST_URI']).CACHE_FIX; //缓存文件名
$CacheDir=CACHE_ROOT.'/'.substr($CacheName,0,1);//缓存文件存放目录
$CacheUrl=$CacheDir.'/'.$CacheName;//缓存文件的完整路径
//GET方式请求才缓存,POST之后一般都希望看到最新的结果
if($_SERVER['REQUEST_METHOD']=='GET'){
//如果缓存文件存在,并且没有过期,就把它读出来。
if(file_exists($CacheName) && time()-filemtime($CacheName)<CACHE_TIME){
$fp=fopen($CacheName,'rb');
fpassthru($fp);
fclose($fp);
exit;
}
//判断文件夹是否存在,不存在则创建
elseif(!file_exists($CacheDir)){
if(!file_exists(CACHE_ROOT)){
mkdir(CACHE_ROOT,0777);
chmod(CACHE_ROOT,0777);
}
mkdir($CacheDir,0777);
chmod($CacheDir,0777);
}
//回调函数,当程序结束时自动调用此函数
function AutoCache($contents){
global $CacheUrl;
$fp=fopen($CacheUrl,'wb');
fwrite($fp,$contents);
fclose($fp);
chmod($CacheUrl,0777);
//生成新缓存的同时,自动删除所有的老缓存,以节约空间,可忽略。
//DelOldCache();
return $contents;
}
function DelOldCache(){
chdir(CACHE_ROOT);
foreach (glob("*/*".CACHE_FIX) as $file){
if(time()-filemtime($file)>CACHE_TIME)unlink($file);
}
}
//回调函数 auto_cache
ob_start('AutoCache');
}else{
//不是GET的请求就删除缓存文件。
if(file_exists($CacheUrl))unlink($CacheUrl);
}
?>

时间: 2024-10-15 02:13:57

一个PHP缓存类代码(附详细说明)_php技巧的相关文章

一个PHP缓存类代码(附详细说明)

复制代码 代码如下: <?php define('CACHE_ROOT', dirname(__FILE__).'/cache'); //缓存存放目录 define('CACHE_TIME', 1800);//缓存时间 单位秒 define('CACHE_FIX','.html'); $CacheName=md5($_SERVER['REQUEST_URI']).CACHE_FIX; //缓存文件名 $CacheDir=CACHE_ROOT.'/'.substr($CacheName,0,1);

PHP 缓存实现代码及详细注释_php技巧

复制代码 代码如下: class CacheException extends Exception {} /** * 缓存抽象类 */ abstract class Cache_Abstract { /** * 读缓存变量 * * @param string $key 缓存下标 * @return mixed */ abstract public function fetch($key); /** * 缓存变量 * * @param string $key 缓存变量下标 * @param str

php class类的用法详细总结_php技巧

一:结构和调用(实例化): class className{} ,调用:$obj = new className();当类有构造函数时,还应传入参数.如$obj = new className($v,$v2-); 二:构造函数和析构函数: 1.构造函数用于初始化:使用__construct(),可带参数. 2.但析构函数不能带参数(用于在销去一个类之前执行一些操作或功能).析构函数用__destruct()做名称.在脚本执行结束时,会销掉内存中的对象,因此可不用析造函数,但有些比如COOKIE等

php 广告调用类代码(支持Flash调用)_php技巧

调用方式如下:其中DebugStr这个函数就是类似一个echo. 复制代码 代码如下: DebugStr('$Adv->getContentById($id); $id为广告编号, 仅调用一条,返回内容为字符串'); echo Adv::getContentById(35); DebugStr('$Adv->getContentByIdJS($id); $id为广告编号, 仅调用一条,返回内容为JS字符串'); echo Adv::getContentByIdJS(35); DebugStr(

仿Aspnetpager的一个PHP分页类代码 附源码下载_php实例

基本逻辑思路和.net的一样,就是将通过实体类来进行配置换成了通过数组进行配置,逻辑比较简单,根据条件判断拼接分页html. 有以下几个简单的功能: 1:支持相关按钮的显示与否配置 2:支持每页数目,文本名称,html标签类名称的自由配置 3:支持url重写过的页面(需自己在配置数组中添加重写规则) 简单吧,还是直接上代码: 核心代码:pager.class.php 复制代码 代码如下: <?php class pager{ //分页的参数配置 private $config=array( //

PHP数据库调用类调用实例(详细注释)_php技巧

复制代码 代码如下: <?PHP require_once("mssql.class.php"); //1.创建类,并连接数据库 $db = new mssql("dns=aaa;uid=sa;pwd=sa;dbname=test"); //2.连接数据库 $conn = $db->config("dns=aaa;uid=sa;pwd=sa;dbname=test"); //3.选择数据库 $dbname = $db->sele

一个简单至极的PHP缓存类代码_php技巧

网上关于 PHP 缓存类的资料很多,不过这个类应该是我见过功能满足需求,但又无比简洁的一个.废话不多说,直接看代码吧!使用说明:1.实例化$cache = new Cache(); 2.设置缓存时间和缓存目录$cache = new Cache(60, '/any_other_path/'); 第一个参数是缓存秒数,第二个参数是缓存路径,根据需要配置. 默认情况下,缓存时间是 3600 秒,缓存目录是 cache/3.读取缓存$value = $cache->get('data_key'); 4

ThinkPHP文件缓存类代码分享

  ThinkPHP文件缓存类代码分享         取自ThinkPHP的文件缓存类代码,这里就不多废话了,小伙伴们自己看注释吧. ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63

php使用类继承解决代码重复的问题_php技巧

本文实例讲述了php使用类继承解决代码重复的问题.分享给大家供大家参考.具体分析如下: 继承直白地说就是给一个类建一个或多个子类,要创建子类就必须在类声明中使用 extends 关键字,新类名在前,extends 在中,父类名在后.   下例中,我们创建两个新类,BookProduct 和Cdproduct ,它们都继承自 ShopProduct 类. 复制代码 代码如下: <?php header('Content-type:text/html;charset=utf-8'); // 从这篇开