织梦获取、写入指定cacheid的块函数GetCacheBlock($cacheid)分析

admin2023-01-18927

函数所在文件:/include/helpers/channelunit.helper.php

这个函数一般在获取栏目标签和获取子栏目标签等里面用到,但是,真正用到这个函数的地方极少。

这个函数的作用就是获取给定参数$cacheid的内容,然后,返回这里面的内容,这是个缓存id,这个我们可以在data/cache/里面看到几个以.inc为后缀的文件,把这个后缀去掉就是这个缓存id了。

代码分析开始:

其实,这个代码非常简单,声明全局缓存时间变量$cfg_puccache_time,这个是我们在后台配置的,可以自己定义,如下图所示。

然后,引入这个缓存文件:data/cache/'.$cacheid.'.inc',我们的目的就是把这里面的内容读取出来,当然就要引入到这个函数里面了。

引入了文件还不行,还要判断这个文件如下几种情况:这个文件是不是存在;文件内容大小是不是空;后台设置的时间是不是为0;缓存时间有没有到期,如果这些有一个成立,直接返回空,进行判断的代码如下:

      if(!file_exists($cachefile) || filesize($cachefile)==0 ||
      $cfg_puccache_time==0 || time() - filemtime($cachefile) > $cfg_puccache_time)
    {
        return '';
    }

若上面的都不成立,说明这个缓存文件正常,既然,正常,那么,就读这个文件内容。

首先,打开这个文件$cachefile ,然后,通过函数fread($fp,filesize($cachefile) 来读取这个文件内容放到$str 里面,这里面存放的是这个缓存文件的字符串,读取完后,不要忘记关闭文件$fp,最后返回这个缓存文件的内容$str 。

这个函数就这么简单,就是一个读文件的函数,在织梦二次开发过程中,我们经常会定义一段虽然简单,但是,却非常有用的函数。


网友评论