• 太阳城娱乐城网伟易博 2018-07-19
  • 先重组转型后变无主 帝龙文化实控人退位被"翻旧账" 2018-07-19
  • 线下数据大揭秘:南京女孩的钱都花哪儿了? 2018-07-19
  • 寒冷时节 咋防流感教你三招抵御感冒 2018-07-19
  • 100%全面屏?华为荣耀10曝光:顶配256GB空间||华为荣耀10曝光-手机行情 2018-07-19
  • 雪天寒冷 常州120一天多接到急救电话1118个 2018-07-18
  • 怀揣“警察梦” 盗贼专偷警用物品 2018-07-18
  • 创新人才教育研究会选举出第二届理事会理事 2018-07-18
  • 筽箌紈贰蟰贺礶羛甶Fantasia 2018-07-18
  • 三亚开通至保亭陵水3条城际旅游公交线路 20分钟发一班车 2018-07-18
  • 苹果AR新技术或让你生活大爆炸 这些公司已布局(股) 2018-07-18
  • 合众人寿阜阳中支因部分保单客户信息不真实被罚款10万元 2018-07-17
  • 顾客网购电视安装时发现屏裂 因已开箱无法正常退货 2018-07-17
  • 20多年未开口的央视女主播 在政协会上说了什么? 2018-07-17
  • 为什么只有韩国能生产大尺寸OLED?中国不行 2018-07-16
  • 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进行开发的程序员或团队阅读。