加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

常见php数据文件缓存类汇总

发布时间:2020-12-12 20:33:04 所属栏目:PHP教程 来源:网络整理
导读:本文实例汇总了常见php数据文件缓存类。供大家参考研究。具体分析如下: 数据文件缓存的做法我们常用的有php文件缓存与利用memcache来缓存数据,下面面我分别总结了memcache缓存数据与数据文件缓存。感兴趣的朋友可以参考一下。 1.对于一般的变量,把该

本文实例汇总了常见php数据文件缓存类。分享给大家供大家参考。具体分析如下:

数据文件缓存的做法我们常用的有php文件缓存与利用memcache来缓存数据,下面面我分别总结了memcache缓存数据与数据文件缓存。感兴趣的朋友可以参考一下。

1.对于一般的变量,把该变量变成php语言的格式,写到文件中,用时只要include这个文件就相当于加载了cache了.

2.对于array型的变量,把array转化为php语言定义array的字符串,用时也只要include就相当于加载了cache了.

3.缓存cache时间上的控制,通过获取缓存文件的创建时间和现在的时间进行对比,如果没有到更新时间,直接读取缓存,如果到了更新时间,查询数据库.

文件缓存类,代码如下:

代码如下:
if (emptyempty($arrayName))
{
$evaluate = "arrayn$space(n";
}
else
{
$evaluate = "${$arrayName} = arrayn$space(n";
}

$space2 = str_repeat("t",$level + 1);
$comma = $space2;
if (!emptyempty($array))
{
foreach ($array as $key => $val)
{
$key = is_string($key) ? ''' . addcslashes($key,''') . ''' : $key;
$val = !is_array($val) && (!preg_match('/^-?[1-9]d*$/',$val) || strlen($val) > 12) ? ''' . addcslashes($val,''') . ''' : $val;
if (is_array($val))
{
$evaluate .= "$comma$key => " . arrayEval($val,'',$level + 1);
}
else
{
$evaluate .= "$comma$key => $val";
}
$comma = ",n$space2";
}
}
$evaluate .= "n$space)";

// 最后才需要一个“;”
if ($level == 0)
{
$evaluate .= ";";
}
return $evaluate;
}

/**

  • 写入缓存
  • @param string $path
  • @param string $arrayName
  • @param array $data
  • @return boolean
    */
    public static function writeCache($path,$arrayName,$data)
    {
    if ($handle = fopen($path,'w+'))
    {
    $data = self::arrayEval($data,$arrayName);

$dataConvert = "<?phpn" . $data;

flock($handle,LOCK_EX);
$rs = fputs($handle,$dataConvert);
flock($handle,LOCK_UN);
fclose($handle);
if ($rs !== false)
{
return true;
}
}
return false;
}
}
?>


调用方法,代码如下:
<div class="codetitle"><a style="CURSOR: pointer" data="76416" class="copybut" id="copybut76416" onclick="doCopy('code76416')"> 代码如下:<div class="codebody" id="code76416">/**

  • 生成文件缓存
  • @param string $filePath 缓存文件的保存路径
  • @param string $arrayName 存放在缓存文件中的数组名称
  • @param array $data 数据
  • @return boolean
    */
    DataCache::writeCache($filePath,$data);
    memcache来缓存数据,这里提供这个文件缓存的类,代码如下:
    <div class="codetitle"><a style="CURSOR: pointer" data="54390" class="copybut" id="copybut54390" onclick="doCopy('code54390')"> 代码如下:<div class="codebody" id="code54390"><?php
    /**
  • 文件缓存类
  • 提供文件缓存
    */
    class Cache_FileCache{

/**

  • 设置缓存
  • @param $key 缓存的关键字key
  • @param $data 缓存的内容
  • @param $cacheLife 缓存时间(单位为秒)如果为0 则表示无限时间
  • @return Bool
    */
    public static function setCache($key,$data,$cacheLife)
    {
    if(file_exists(SITE_FILE_CACHE))
    {
    @$file =
    SITE_FILE_CACHE . "/" . $key .".php";
    $cache = array();
    $time = __SYS_TIME;
    $cache['content'] = $data;
    $cache['expire'] = $cacheLife === 0 ? 0 : $time+$cacheLife;
    $cache['mtime'] = $time;
    $cache = serialize($cache);
    $setReslut = @file_put_contents($file,$cache) or self::error(line,"文件写入出错");
    $chmodReslut = @chmod($file,0777) or self::error(line,"设定文件权限失败");
    if($setReslut && $chmodReslut)
    {
    return true;
    }
    else
    {
    return false;
    }
    }
    }

/**

  • 得到缓存数据
  • @param $key 缓存的关键字key
  • @return array
    */
    public static function getCache($key)
    {
    @$file = __SITE_FILE_CACHE . "/" . $key .".php";
    if(file_exists($file))
    {
    $data = @file_get_contents($file);
    $data = unserialize($data);
    if($data['expire']==0 || $data['expire'] > __SYS_TIME)
    {
    return $data['content'];
    }
    else
    {
    unlink($file);
    return array();
    }
    }
    }

/**

  • 删除缓存文件
  • @param $key 缓存$key
  • @return Bool
    */
    public static function delCache($key)
    {
    if (@unlink(__SITE_FILE_CACHE."/".$key.".php"))
    {
    return true;
    }
    else
    {
    return false;
    }
    }

/**

  • 清除所有缓存文件
  • @return Bool
    */

public static function clearAllCache()
{
$files = scandir(SITE_FILE_CACHE);
foreach ($files as $val)
{
@unlink(
SITE_FILE_CACHE."/".$val);
}
}

/**

  • 出错处理函数
  • @param $line 行数
  • @param $msg 信息
    */
    public static function error($line,$msg)
    {
    die("出错文件:".file."/n出错行:$line/n错误信息:$msg");
    }
    }
    ?>

    希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。

(编辑:李大同)

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

    推荐文章
      热点阅读