tpshop函数tpCache()功能备注
作者:Alpha时间:2017-09-14 阅读数:3800 +人阅读
tpCache函数位置:\Application\Common\Common\common.php,
作用:获取缓存或者更新缓存
参数:缓存文件名称 缓存数据
一处使用的位置:网站后台网站信息设置
/**
* 获取缓存或者更新缓存
* @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存在且值有变更新此项
以上为个人分析仅供参考,如有理解错误之处欢迎评论留言!
本站所有文章、数据、图片均来自互联网,一切版权均归源网站或源作者所有。
如果侵犯了你的权益请来信告知我们删除。邮箱:595397166@qq.com
下一篇:TPshop数据库表介绍