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

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

801 2021-04-26 04:21:49

收藏
帝国cms怎样结合memcached缓存优化性能?
本函数能实现灵动标签缓存功能, 使用方法:传入生成的灵动标签部分,缓存时间秒,缓存类型。其他部分和灵动标签一样的使用
 

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内容页点赞功能怎么用?

网站的点赞代表用户对网站内容的认可,点赞数越高代表质量越高,对于提升用户体...

8 676
帝国cms怎样将信息来源befrom外链转内链?
帝国cms怎样将信息来源befrom外链转内链?

很多技术分享型站点转载了外站不少信息,部分有素质的站长会展示信息来源并链...

27 3821
帝国CMS二次开发给tags增加封面图片
帝国CMS二次开发给tags增加封面图片

帝国CMStag作为聚合页,应用十分广泛。但作为聚合页,配图往往是必不可少的。帝...

14 908
帝国CMS调用新浪iplookup接口实现不同ip跳转不同城市分站
帝国CMS调用新浪iplookup接口实现不同ip跳转不同城市分站

让不同城市的访客在访问页面时跳转到对应的城市站才能带来更好的体验,而新浪...

1 335
帝国CMS列表页面list.var怎样将年月日时间分开调用?
帝国CMS列表页面list.var怎样将年月日时间分开调用?

很多时候,出于美观或者个性化的需求,我们需要将帝国cms的发布时间切割为年月...

7 853
帝国CMS怎样根据栏目关键字调用Tags信息
帝国CMS怎样根据栏目关键字调用Tags信息

在帝国cms开发过程中,我们经常会遇到这样那样的需求。就如栏目信息的展示,有...

1 430
Wordpress转为帝国cms将会出现的问题
Wordpress转为帝国cms将会出现的问题

帝国cms和Wordpress是完全不同的程序,其设计理念有着天壤之别。转换肯定会存...

3 642
帝国cms动态页、静态页、伪静态页有什么区别?
帝国cms动态页、静态页、伪静态页有什么区别?

我们知道,帝国cms既可以做动态页,也可以做静态页,还可以做伪静态页。那么,他们...

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

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

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

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

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

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

0 365
帝国cms在线考试系统模板插件
帝国cms在线考试系统模板插件

一直没看到好用的帝国cms在线考试插件,所以自己开发了一款。在线考试插件用...

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

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

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

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

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

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

0 419
帝国cms联想词搜索高级搜索插件下载
帝国cms联想词搜索高级搜索插件下载

帝国CMS自带的搜索功能虽然强大,但也有很强的局限性 -- 必须关键词完全匹配...

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