• 【2018夏季达沃斯】未来就业报告发布:机器将比人更“能干” 哪些职位更“吃香”? 2018-09-19
  • 西安市民:本想买点香菜吃火锅?比较后还是买了些肉 2018-09-19
  • 安吉发布乡村治理标准规范 2018-09-19
  • 华北能源监管局开展电网运行风险管控专项督查 2018-09-18
  • 马来西亚新山依斯干达特区吸资2531亿马币 ——凤凰网房产马来西亚 2018-09-18
  • 繁星戏剧挑战浸没式独角戏 2018-09-18
  • 领导干部自然资源资产离任审计制度试点 让福建省光泽县绿意盎然(图)-地方新闻-时政频道-中工网 2018-09-08
  • 人民日报评留美生数落父母:为亲情拓对话空间 2018-09-07
  • 网友给四川省委书记、省长留言获回复 共计25条 2018-09-07
  • 娱乐城新优惠 2018-09-06
  • 无人售货架现身出租车内 乘客扫码付款随时取走零食 2018-09-06
  • 江西公布拖欠劳动报酬典型案例 最高拖欠近200万元 2018-09-06
  • 做学习宣传贯彻人民领袖思想的排头兵 2018-09-06
  • 华夏幸福荣获2018中国品牌先锋大奖之杰出企业奖 2018-09-05
  • 10大路口因礼让斑马线致堵 济南交警推新规约束行人 ——凤凰网房产济南 2018-09-05
  • PHP缓存操作实例详解

    栏目: 编程语言 发布于: 2014-05-01 15:22:14

    为什么要使用缓存技术?理由很简单:提高效率。在程序开发中,获取信息的方式主要是查询数据库,除此以外,也可能是通过Web Services或者别的某种方法,无论哪种方法,在大量的并发访问面前,它们都可能成为效率的瓶颈,为了解决这些问题,人们提出了很多解决方案,其中一些是利用优化软件(如:APC,Eaccelerator,Zend Optimizer等等)来提高程序的运行效率,合理的运用这些软件,往往能使程序的运行效率得到数量级上的提升,但前提是你必须拥主机的控制权,以便能够安装这些软件,如果你使用的是虚拟主机的话,那么只能祈祷你的服务提供商已经预装了某个优化软件,否则就必须自己使用PHP来实现相应的缓存功能。如果这让你感到无所适从,相信下面的这段缓存操作类的代码能给你一些有用的启发。(PHP缓存操作实例详解)

    <?php
    /**
    +----------------------------------------------------------  
    * franklin 缓存操作类  
    +----------------------------------------------------------  
    * 文件名称  cache.php  
    +----------------------------------------------------------  
    * 文件描述  缓存操作类  
    +----------------------------------------------------------  
    * 作 者  http://www.rocksun.cn  
    +----------------------------------------------------------  
    * 时 间  2012-05-05  
    +----------------------------------------------------------  
    */  
    
    class cache{
    //查询参数
    protected $options=array();
    //缓存次数
    protected $cacheCount=0;
    //缓存时间
    protected $cachetime=60;
    //缓存路径
    protected $cachePath='cache/';
    //数据返回类型, 1代表数组, 2代表对象
    protected $returnType=1;
    /**  
    * 读取缓存  
    * @param string $id  缓存名称  
    * @param int $time 缓存有效时间,默认为60秒,0为永远失效  
    * @param string $path缓存文件存放路径  
    * @accesspublic readCache  
    * @returnmixed如果读取成功返回缓存内容, 否则返回NULL  
    */  
    public function readCache($id,$time,$Path=''){
    	$id=md5($id);
    	$this->cachePath=emptyempty($Path)?$this->cachePath:$Path;
    	$this->cachetime=emptyempty($time)?$this->cachetime:$time;
    	$file=$this->cachePath.$id.'.php';
    	if(file_exists($file)){
    		//缓存过期
    		if((filemtime($file)+$time)<time()){
    			@unlink($file);
    			return NULL;
    		}
    		if(1===$this->returnType){
    			$row=include $file;
    		}else{
    			$data=file_get_contents($file);
    			$row=unserialize($data);
    		}
    		return $row;
    	}
    	return NULL;
    }
    /**  
    * 写入缓存  
    *  
    * @accesspublic  
    * @param mixed$data缓存内容  
    * @returnbool是否写入成功  
    */  
    
    public function writeCache($id,$data,$Path=''){ 
    	$this->cacheCount++;
    	$id=md5($id);
    	$this->cachePath=emptyempty($Path)?$this->cachePath:$Path;
    	$file=$this->cachePath.$id.'.php';
    	chmod($this->cachePath,777);
    	if(1===$this->returnType){
    		$data='<?php return '.var_export($data, TRUE).'; ?>';
    	}else{
    		$data=serialize($data);
    	}
    	return file_put_contents($file, $data);
    }
    /**  
    * 删除指定缓存  
    *  
    * @accesspublic  
    * @param mixed$id缓存名称  
    * @returnbool是否删除成功  
    */  
    public function delCache($id,$Path=''){  
    	$id=md5($id);
    	$this->cachePath=emptyempty($Path)?$this->cachePath:$Path;
    	$file=$this->cachePath.$id.'.php';
    	if(file_exists($file)){
    		return unlink($file);
    	}
    	return NULL;
    }
    /**  
    * 删除所有缓存  
    *  
    * @accesspublic  
    * @param mixed$dir缓存名称  
    * @returnbool清除所有缓存是否成功  
    */  
    public function delAllCache($Path=''){  
    	$id=md5($id);
    	$this->cachePath=emptyempty($Path)?$this->cachePath:$Path;
    	$path=$this->cachePath;
    	if(is_dir($path)){
    		if($dh=opendir($path)){
    			while(($file=readdir($dh))!==false){
    				if($file!='..'&$file!='.'){
    					if(is_dir($path.'/'.$file)){
    						if(!delDir($path.'/'.$file)){
    							return 0;
    						}
    					}else{
    						if(!unlink($path.'/'.$file)){
    							return 0;
    						}
    					}
    				}
    			}
    			closedir($dh);
    		}
    		return 1;
    	}
    }
    }

    以上缓存操作类的引用方法如下:

    <?php
    include('cache.php');
    $data=array('http://www.rocksun.cn','http://www.rocksun.cn','http://www.rocksun.cn');
    $cache=new cache();
    $id='test';
    //写入缓存
    $cache->writeCache($id,$data);
    //读缓存并打印
    $name_row=$cache->readCache($id,120);
    print_r($name_row);
    //删除某个变量
    $cache->delCache($id);
    //删除全部缓存
    $cache->delAllCache();

    注意要保证cache目录(即缓存目录)存在并且可写。

    您可能感兴趣的文章

    • php获取当前操作系统类型
    • 用PHP函数memory_get_usage获取当前PHP内存消耗量以实现程序的性能优化
    • PHP生成迅雷、快车、QQ旋风下载链接的实例
    • php如何判断当前的操作系统是linux还是windows
    • php用ZipArchive函数实现文件的压缩与解压缩
    • php实现多重继承实例
    • PHP缓存技术详解
    • php获取目录所有文件并将结果保存到数组的程序
    本站文章除注明转载外,均为本站原创或编译?;队魏涡问降淖?,但请务必注明出处。
    转载请注明:文章转载自 七星彩票平台
    本文标题:PHP缓存操作实例详解
    IT技术书籍推荐:
    GitHub入门与实践
    GitHub入门与实践
    大塚弘记 (作者), 支鹏浩 (译者), 刘斌 (译者)
    《GitHub入门与实践》从Git的基本知识和操作方法入手,详细介绍了GitHub的各种功能,GitHub与其他工具或服务的协作,使用GitHub的开发流程以及如何将GitHub引入到企业中。在讲解GitHub的代表功能Pull Request时,本书专门搭建了供各位读者实践的仓库,邀请各位读者进行Pull Request并共同维护。 《GitHub入门与实践》旨在指导各位读者如何在开发现场使用GitHub进行高效开发,适合所有想要使用GitHub进行开发的程序员或团队阅读。