• MINI车联网服务3月起升级至4G网络 增加新功能 2018-02-18
  • 以色列警方:已有足够的证据可以用于起诉以总理 2018-02-18
  • 冬奥会短节目第四 金博洋:伤病令我更强大 2018-02-18
  • 天津市北辰区委书记冯卫华:强化政治担当 把主体责任落实落细 2018-02-17
  • 正月初一客流继续回落 全国铁路预计发送旅客389万人次 2018-02-17
  • 送别余光中:诗人虽远行,乡愁永流传 2018-02-17
  • 集团原董事长违纪被查 人员伤亡事故频发 湖北宜化:去年亏损额超过公司市值 2018-02-17
  • 图片故事:“六个人”的火车站 2018-02-16
  • 【马来西亚房产】雅诗阁之星十年包租可续租! ——凤凰网房产马来西亚 2018-02-16
  • 大量顺差在中国,多数利润归美国 2018-02-16
  • 河北今年将削减煤炭消费500万吨 2018-02-16
  • 开创生态文明新时代 绘出美丽中国新图景 2018-02-15
  • 以色列警方:已有足够的证据可以用于起诉以总理 2018-02-15
  • 山东求败让辽篮意外受益 与所在半区其他四队常规赛战绩为7胜1负 2018-02-15
  • 春节期间乌鲁木齐电力营业厅每天11时至14时30分营业 2018-02-14
  • 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进行开发的程序员或团队阅读。