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

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

1009 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调用新浪iplookup接口实现不同ip跳转不同城市分站
帝国CMS调用新浪iplookup接口实现不同ip跳转不同城市分站

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

1 398
帝国CMS文章怎样插入短视频?
帝国CMS文章怎样插入短视频?

在这个短视频横行的年代,我们都知道一个短视频比文章比图片都要更加具有吸引...

1 529
帝国CMS开发的网站怎样修改网站标题关键词和描述?
帝国CMS开发的网站怎样修改网站标题关键词和描述?

在网站运营的过程中,由于业务的变更或是优化的需要,可能需要修改网站的标题,关...

1 519
帝国cms列表页list.var调用tags怎么做?
帝国cms列表页list.var调用tags怎么做?

文章tag作为文章的重要组成部分,在信息集合上表现非常好,如果合理利用,能获得...

3 407
帝国cms会员中心怎样调用我提交的反馈历史记录?
帝国cms会员中心怎样调用我提交的反馈历史记录?

帝国cms信息反馈表非常好用,通过合理开发信息反馈功能,我么可以实现用户留言...

1 367
帝国cms怎样判断当前页面为首页?
帝国cms怎样判断当前页面为首页?

在帝国cms开发时,我们经常要给栏目配置高亮效果。栏目高亮判断循环的id等于...

0 592
帝国cms怎样关闭评论验证码?
帝国cms怎样关闭评论验证码?

帝国cms网站评论验证码是一个很重要的功能,有验证码才能挡住大量的灌水信息...

0 385
帝国cms怎样给广告增加排序?
帝国cms怎样给广告增加排序?

帝国cms广告系统功能比较强大,但本身并没有排序的功能。如果想要替换广告的...

3 441
推荐插件
帝国cms批量添加后台用户插件
帝国cms批量添加后台用户插件

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

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

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

0 985
帝国cms百度AI黑白图像上色api接口对接插件
帝国cms百度AI黑白图像上色api接口对接插件

百度开放了系列AI功能api如图像上色、图像去雾、图像修复、无损放大、清晰...

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

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

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

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

0 448
帝国cms纳米数据接口(足球比赛中最新数据)
帝国cms纳米数据接口(足球比赛中最新数据)

帝国cms 对接纳米数据(www.nami.com)接口,本接口主要接收、整理足球比赛实时数...

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

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

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

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

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