| 帝国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,下载次数:216)
 |