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

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

1063 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自带的会...

3 617
帝国cms静态页中如何获取php设置的cookie值?
帝国cms静态页中如何获取php设置的cookie值?

帝国cms的前台页面,是生成的静态文件,如果想要直接获取cookie,或是直接生成页...

3 704
帝国cms某个栏目使用完全自定义的分页功能
帝国cms某个栏目使用完全自定义的分页功能

帝国CMS列表页的分页函数是用系统设置中的分页函数,修改都是在系统设置里进...

0 823
帝国cms自动更新相关tag的fclast上次修改时间字段
帝国cms自动更新相关tag的fclast上次修改时间字段

每次更新发布文章tag信息后,tag数据表的时间会自动同步,但tag信息表的修改时...

0 509
栏目目录搭建的帝国cms网站怎样写伪静态规则?
栏目目录搭建的帝国cms网站怎样写伪静态规则?

如果用栏目搭建帝国cms站点,伪静态规则该怎么写呢?如果直接作用于根目录,可能...

1 634
填坑笔记:帝国cms栏目部分页面无法访问的原因与解决办法
填坑笔记:帝国cms栏目部分页面无法访问的原因与解决办法

在网站开发的过程中,我们可能因为这样那样的问题遇到无数的出错。有可能是代...

0 531
怎样提高帝国cms的生成刷新效率?
怎样提高帝国cms的生成刷新效率?

帝国cms是一款功能强大的cms,不仅安全性高,还能够轻松驾驭20万以上的数据,牛逼...

1 631
帝国cms根据关键词调用相关文章,每个关键词调用4条
帝国cms根据关键词调用相关文章,每个关键词调用4条

帝国cms根据关键词调用相关文章,每个关键词调用信息不超过4条,如果关键词和栏...

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

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

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

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

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

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

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

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

0 666
帝国cms批量添加后台用户插件
帝国cms批量添加后台用户插件

使用帝国cms的企业用户、新闻资讯类站点的用户很多,此类站点很多时候需要有...

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

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

0 550
帝国cms访问统计ip地址链接与封禁插件下载
帝国cms访问统计ip地址链接与封禁插件下载

下载鸥开发了这款帝国cms封禁ip插件,自动记录访问情况,让我们可以更快的识别...

0 1224
帝国cms多栏目多数据表自动审核推送插件
帝国cms多栏目多数据表自动审核推送插件

本插件基于帝国cms帝国cms每日自动审核插件,在自动审核指定条数信息的基础上...

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