加入收藏 | 设为首页 | 会员中心 | 我要投稿 应用网_丽江站长网 (http://www.0888zz.com/)- 科技、建站、数据工具、云上网络、机器学习!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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);
    先加载配置信息是因为,在创建其它缓存文件的时候,经常要用到系统的设置信息,如系统设置中有一个选项可以让用户自定义最新日志的数量,在缓存最新日志的时候就会用到该变量,所以必须先确保配置信息成功缓存后,再缓存其它项目。

(编辑:应用网_丽江站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读