帝国CMS灵动标签缓存设置(支持memcached缓存) 本文关键字词:灵动标签,灵动标签缓存,帝国CMS缓存
本函数能实现灵动标签缓存功能, 使用方法:传入生成的灵动标签部分,缓存时间秒,缓存类型。其他部分和灵动标签一样的使用
灵动标签缓存插件连接:http://bbs.phome.net/showthread-31-324579-0.html 百度编辑器插件:http://bbs.phome.net/showthread-31-324291-0.html 无限联动2.0版插件:http://bbs.phome.net/showthread-31-324563-0.html 自定义伪静态插件:http://bbs.phome.net/showthread-31-325069-0.html 栏目批量修改是否生成:http://bbs.phome.net/showthread-31-325076-0.html
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/下,如有需求自行修改为自己的。
更多使用请自行研究拓展。本小插件仅作抛砖引玉。
更新日志:
2014/11/17 增加memcached缓存支持 2014/11/25 缓存小BUG修改:$cdir=ECMS_PATH.'d/Cache/'.esub(md5($cname),1).'/';//缓存路径 2015/06/12 修复一些其他不兼容的BUG 更完美
相关链接:帝国CMS灵动标签查询缓存http://www.phpin.net/thread-216-1-1.html
上传以下附件: [下载 *.txt](文件大小:2.37 KB,下载次数:211)
|