tpshop函数tpCache()功能备注

字号+ 作者:alpha 来源:www.seoalphas.com 2017-09-14 08:39 我要评论(0)

tpCache函数位置:\Application\Common\Common\common.php, 作用:获取缓存或者更新缓存 参数:缓存文件名

tpCache函数位置:\Application\Common\Common\common.php,

作用:获取缓存或者更新缓存

参数:缓存文件名称 缓存数据

一处使用的位置:网站后台网站信息设置

QQ截图20170316155143.png

/**
* 获取缓存或者更新缓存
* @param string $config_key 缓存文件名称
* @param array $data 缓存数据  array('k1'=>'v1','k2'=>'v3')
* @return array or string or bool
*/
function tpCache($config_key,$data = array()){
   $param = explode('.', $config_key);
   if(empty($data)){
       //如$config_key=shop_info则获取网站信息数组
       //如$config_key=shop_info.logo则获取网站logo字符串
       $config = F($param[0],'',TEMP_PATH);//直接获取缓存文件
       if(empty($config)){
           //缓存文件不存在就读取数据库
           $res = D('config')->where("inc_type='$param[0]'")->select();
           if($res){
               foreach($res as $k=>$val){
                   $config[$val['name']] = $val['value'];
               }
               F($param[0],$config,TEMP_PATH);
           }
       }
       if(count($param)>1){
           return $config[$param[1]];
       }else{
           return $config;
       }
   }else{
       //更新缓存
       $result =  D('config')->where("inc_type='$param[0]'")->select();
       if($result){
           foreach($result as $val){
               $temp[$val['name']] = $val['value'];
           }
           foreach ($data as $k=>$v){
               $newArr = array('name'=>$k,'value'=>trim($v),'inc_type'=>$param[0]);
               if(!isset($temp[$k])){
                   M('config')->add($newArr);//新key数据插入数据库
               }else{
                   if($v!=$temp[$k])
                       M('config')->where("name='$k'")->save($newArr);//缓存key存在且值有变更新此项
               }
           }
           //更新后的数据库记录
           $newRes = D('config')->where("inc_type='$param[0]'")->select();
           foreach ($newRes as $rs){
               $newData[$rs['name']] = $rs['value'];
           }
       }else{
           foreach($data as $k=>$v){
               $newArr[] = array('name'=>$k,'value'=>trim($v),'inc_type'=>$param[0]);
           }
           M('config')->addAll($newArr);
           $newData = $data;
       }
       return F($param[0],$newData,TEMP_PATH);
   }
}

如果提交了数据,$data数值不为空进入else判断开始更新缓存。

更新数据前先做判断:

1、取出数据库中对应表数据

$result =  D('config')->where("inc_type='$param[0]'")->select();

2、如果数据不为空,数据比对

a、如果有新的name字段,

M('config')->add($newArr);//新key数据插入数据库

b、提交的数据值都有,但是有字段值已经变更,则更新该字段值:

 M('config')->where("name='$k'")->save($newArr);//缓存key存在且值有变更新此项


以上为个人分析仅供参考,如有理解错误之处欢迎评论留言!


标签
tpshop

本站部分技术文章为参考网上实用内容发布,目的是记录踩坑经验,若未备注来源而侵犯了您原创文章权益,请联系博主删除;对文章有不同看法的朋友欢迎在评论区留言互动

相关文章
  • TPshop encrypt()加密函数 md5加密

    TPshop encrypt()加密函数 md5加密

    浏览次数:2312

  • TPshop商品规格--specList()设置修改

    TPshop商品规格--specList()设置修改

    浏览次数:1878

  • tpshop后台操作成功跳转界面修改

    tpshop后台操作成功跳转界面修改

    浏览次数:1659

  • TPshop商品属性--goodsAttributeList()设置修改

    TPshop商品属性--goodsAttributeList()设置修改

    浏览次数:1238

  • TPshop测试代码

    TPshop测试代码

    浏览次数:706

  • Tpshop 插件、多商户版、缓存各种问题处理与应用记录

    Tpshop 插件、多商户版、缓存各种问题处理与应用记录

    浏览次数:469

  • TPshop首页设置头部广告是否弹出

    TPshop首页设置头部广告是否弹出

    浏览次数:458

  • TPshop数据库表介绍

    TPshop数据库表介绍

    浏览次数:422

网友点评
功能开发中......
0.375000s