PHP中常见的缓存技术实例详解
发布时间:2022-07-20 15:24:33 所属栏目:PHP教程 来源:互联网
导读:这篇文章主要介绍了PHP中常见的缓存技术,以实例形式较为详细的分析了php中缓存技术的原理、特点及使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下。 本文实例分析了PHP中常见的缓存技术,分享给大家供大家参考,具体如下: JBLOG在开发的过程中,对性能
这篇文章主要介绍了PHP中常见的缓存技术,以实例形式较为详细的分析了php中缓存技术的原理、特点及使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下。 本文实例分析了PHP中常见的缓存技术,分享给大家供大家参考,具体如下: JBLOG在开发的过程中,对性能的优化做了不少工作。为了尽量减少不必要的数据库查询,我对一些数据进行了缓存和静态化处理。 JBLOG中与缓存相关的函数保存在include目录下的cache.func.php里,主要函数: //刷新缓存 function recache($cachestr = '') { if (!$cachestr) { $cachelist = array('config','class','archive','newcomment','newpost','link','tag','statistic','topblog'); } else { $cachelist = explode(',',$cachestr); foreach ($cachelist as $cache) { $cachename = $cache.'_recache'; if (function_exists($cachename)) { $cachename(); } } } } recache()函数用来刷新缓存,每一个缓存以独立的函数存在,刷新缓存时仅需执行一次相应的函数即可。 //将字符串写进文件 function writeToFile($cachename,$content = '') { $allowcache = $cachelist = array('config','class','archive','newcomment','newpost','link','tag','statistic','topblog'); if (in_array($cachename,$allowcache)) { $cache_dir = JBLOG_ROOT.'cache_data/'; $cache_file_name = $cache_dir.'cache_'.$cachename.'.php'; if (!is_dir($cache_dir)) { @mkdir($cache_dir,0777); } @fwrite($fp,$content); @fclose(); @chmod($cache_file_name,0777); } else { echo '缓存文件<b>'.$cache_dir.$cache_file_name.'</b>创建失败!<br />'; } } else { die('缓存名称<b>'.$cachename.'</b>不在系统允许的范围内!'); } } writeToFile() 函数用于将数据写入到缓存目录下以cache_缓存名称.php命名的文件中。 再看具体的缓存函数实例: //缓存博客分类 function class_recache() { global $db,$tablepre; $content = ''; $sql = "SELECT id,classname,description,orderid,arcnum FROM `{$tablepre}class` ORDER BY orderid"; $result = $db->query($sql); } $content = substr($content,0,strrpos($content,',')); $content = "$class_cache = array(rn{$content}rn);"; writeToFile('class',$content); } class_recache()函数从数据库取出数据,然后构造一个数组,以分类ID作为数组的索引,类别的信息作为对应的值,方便数据的访问。 缓存的引入: 所有缓存数据统一在include目录下的common.inc.php引入,代码如下: //加载系统设置信息,文件不存在则重建缓存 if ([email=!@include(JBLOG_ROOT.]!@include(JBLOG_ROOT.'cache_data/cache_config.php'[/email])) { require_once(JBLOG_ROOT.'include/cache.func.php'); recache('config'); exit('成功创建系统配置信息缓存,请刷新页面!'); if ($cachestr) { require_once(JBLOG_ROOT.'include/cache.func.php'); recache($cachestr); exit('所有缓存重建完成,请刷新页面!'); } unset($cachelist,$cachename,$cachestr); 先加载配置信息是因为,在创建其它缓存文件的时候,经常要用到系统的设置信息,如系统设置中有一个选项可以让用户自定义最新日志的数量,在缓存最新日志的时候就会用到该变量,所以必须先确保配置信息成功缓存后,再缓存其它项目。 (编辑:应用网_丽江站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |