下载鸥 > 网站下载 > 开发教程 > 帝国CMS

帝国cms怎样结合memcached缓存优化性能?

1068 2021-04-26 04:21:49

收藏
本函数能实现灵动标签缓存功能, 使用方法:传入生成的灵动标签部分,缓存时间秒,缓存类型。其他部分和灵动标签一样的使用
 

Userfun.php代码:

/****************帝国CMS灵动标签缓存*******************/
function YL_User_Cache($bq,$expire=3600,$type='file'){
global $empire,$public_r;
if (!$type){
$type=$public_r['add_cache'];
}
$expire=(int)$expire;
$cmd5='yl_'.md5(serialize($bq));//yl_是缓存前缀
$data=array();//返回的数组
if($type=='file'){
$cname=$cmd5.'.php';//缓存名称
$cdir=ECMS_PATH.'d/Cache/'.esub(md5($cname),1).'/';//缓存路径
$path=$cdir.$cname;//完整路径
createDir($cdir);//创建文件夹
$head="<?php if(!defined('InEmpireCMS')){exit();}?>";//安全头部
if(file_exists($path) && time()-filemtime($path)<$expire){//读取缓存内容
$filecont=str_replace($head, '', file_get_contents($path));
$data=unserialize($filecont);
}
}elseif($type=='memcache'){
$memcache = @memcache_connect('localhost', 11211);//连接memcache
if ($memcache) {
$ismemcache=1;
$memdata=$memcache->get($cmd5);
$data=unserialize($memdata);
if($data){
$memcache->close();
}
}
}
if(!$data){
$bqno=0;
$ecms_bq_sql=sys_ReturnEcmsLoopBq($bq[0],$bq[1],$bq[2],$bq[3],$bq[4],$bq[5]);
if($ecms_bq_sql){
while($bqr=mysql_fetch_array($ecms_bq_sql,MYSQL_ASSOC)){
$bqsr=sys_ReturnEcmsLoopStext($bqr);
$bqno++;
$data[$bqno]=array('bqsr'=>$bqsr,'bqr'=>$bqr);
}
}
if($type=='file'){
file_put_contents($path, $head.serialize($data));//写入缓存文件
}elseif($type=='memcache' && $ismemcache==1){
$memcache->set($cmd5, serialize($data),FALSE,$expire);
$memcache->close();
}
}
return $data;
}
//检查并创建文件夹
function createDir($path){
if (!file_exists($path)){
createDir(dirname($path));
mkdir($path,0777);
}
}
 

模版中使用:

/*
* 灵动标签查询缓存
* 传入生成的灵动标签部分,缓存时间秒,缓存类型$type='file'为文件缓存,$type='memcache'为memcache缓存)
* 模版中使用方法如下:
*/
<?
$shujv=YL_User_Cache(array(灵动标签代码),缓存时间,'缓存类型');//缓存时间为秒
foreach($shujv as $k=>$v){
?>
<li><a href="<?=$v[bqsr][titleurl]?>"><?=$v[bqr][title]?></a></li>
<?
}
?>
 

例子1:(调用下载模型下的10条数据,并且使用memcache缓存)

<?php
$shujv=YL_User_Cache(array('download',10,21,0,'','plnum DESC'),10,'memcache');
foreach($shujv as $k=>$v){
?>
<li><a href="<?=$v[bqsr][titleurl]?>"><?=$v[bqr][title]?></a></li>
<?
}
?>
 

例子2:(调用下载模型下的10条数据,使用文件缓存)

<?php
$shujv=YL_User_Cache(array('download',10,21,0,'','plnum DESC'),10,'file');
foreach($shujv as $k=>$v){
?>
<li><a href="<?=$v[bqsr][titleurl]?>"><?=$v[bqr][title]?></a></li>
<?
}
?>

文件缓存生成于/d/Cache/下,如有需求自行修改为自己的。

修改记录
缓存小BUG修改:$cdir=ECMS_PATH.'d/Cache/'.esub(md5($cname),1).'/';//缓存路径

原文链接
http://bbs.phome.net/showthread-31-324579-0.html

本文地址:https://xzo.com.cn/develop/empire/852.html

有帮助,很赞!

信息来源:帝国cms论坛
导出教程 下载word版教程
发表评论 共有条评论
关于帝国CMS


帝国cms是一款功能极为强大的cms程序,性能强悍、安全性高,可轻松支持10万数据,高级开发人员可制作出能容纳千万数据量的网站,是国内最出色的开源cms程序之一,推荐企业用户使用

当前最新版本为7.5,8.0版本即将上线,新版本的核心优化点在于多终端的适配。

推荐帝国CMS开发教程
忘记帝国CMS账号/密码/认证码如何重置
忘记帝国CMS账号/密码/认证码如何重置

部分用户一段时间没有登录后台,或是换了机器忘记了帝国CMS账号/密码/认证码,...

16 1254
帝国CMS怎样批量取消文章审核
帝国CMS怎样批量取消文章审核

使用帝国CMS的朋友可能有这样的需求:由于信息发生变化,或是数据出了问题,想要...

7 800
帝国CMS怎样让一条信息具有多个模板?
帝国CMS怎样让一条信息具有多个模板?

帝国CMS的信息是绑定内容模板的,通过本教程可以实现在前台自由使用不同的模...

17 723
帝国CMS怎样在栏目文章列表中间插入一条新数据到指定位置?
帝国CMS怎样在栏目文章列表中间插入一条新数据到指定位置?

有客户的小说站在发布完一篇小说后,发现遗漏了一章。此时如果新增一章必然是...

14 1093
帝国cms公共模板变量temp.header/temp.footer怎样在php代码中直接调用?
帝国cms公共模板变量temp.header/temp.footer怎样在php代码中直接调用?

在帝国cms二次开发过程中,我们经常需要调用模板的公共部位,也就是帝国cms的公...

0 676
帝国cms投稿后怎样跳转指定页面?
帝国cms投稿后怎样跳转指定页面?

帝国cms投稿后怎样跳转的问题一直让很多人困扰。有人想跳到个人中心,也有人...

1 517
帝国CMS怎样配置勾选会员注册协议才能注册
帝国CMS怎样配置勾选会员注册协议才能注册

帝国CMS默认注册是没有会员注册协议的。但如果从严谨的角度出发,不勾选&ldqu...

0 805
帝国cms判断图片是否带域名,无域名则补全域名
帝国cms判断图片是否带域名,无域名则补全域名

那么,我们要怎样在图片路径不完善的时候正常在手机端显示图片呢?...

0 555
推荐插件
帝国cms自动给正文关键词添加tag内链
帝国cms自动给正文关键词添加tag内链

帝国cms有自带的给关键词添加内链功能,但需要手动添加关键词,容易出现疏漏和...

0 961
帝国cms网站会员登录与退出历史记录日志插件
帝国cms网站会员登录与退出历史记录日志插件

帝国cms默认只有上次登录时间与ip,没有一个记录清单,所以今天,我们分享这个帝...

0 509
帝国CMS内网用户静态站点文章访客统计插件
帝国CMS内网用户静态站点文章访客统计插件

本插件适用于内网用户,可查看单篇文章访问者ip地址。如果添加访问者ip组,可查...

0 671
帝国cms百度AI图像清晰度增强api接口对接插件
帝国cms百度AI图像清晰度增强api接口对接插件

通过本插件,可以实现帝国cms网站对接百度云api实现图像清晰度增强的功能。经...

0 633
帝国cms自动生成文章新闻目录插件下载
帝国cms自动生成文章新闻目录插件下载

用户体验是我们的需求,百度蜘蛛的认可更是我们的需求。毕竟,没有收录排名,何来...

0 1273
帝国cms百度AI图像无损放大api接口对接插件
帝国cms百度AI图像无损放大api接口对接插件

通过本插件,可以实现帝国cms网站对接百度云api实现图像无损放大的功能。经过...

0 561
帝国cms百度AI图像去雾api接口对接插件
帝国cms百度AI图像去雾api接口对接插件

通过本插件,可以实现帝国cms网站对接百度云api实现图像去雾的功能。经过实际...

0 559
帝国cms智能自动审核按星期几审核指定栏目带推送插件
帝国cms智能自动审核按星期几审核指定栏目带推送插件

采集站的必备资源是自动审核,要做到日收录也离不开定时发布。而本插件的自动...

0 1423
客服QQ:341553759
扫码咨询 常见问题 >
官方交流群:90432500
点击加入