帝国CMS的前台定时执行刷新任务插件,可替代需要开着后台才会执行刷新任务。
帝国cms官方插件下载地址:http://bbs.phome.net/showthread-31-196160-0.html
******************** 安装插件 ********************
1、将“upload”目录下的文件上传至帝国CMS系统目录,即把DoTimeRepage目录,放到/e/extend/中,安装后路径是:/e/extend/DoTimeRepage/;
2、插件安装完毕。
******************** 卸载插件 ********************
1、删除 /e/extend/DoTimeRepage/ 目录;
2、插件卸载完毕。
******************** 插件使用 ********************
1、在经常被访问到的页面(比如:首页)最底部加上如下代码即可:(两种方式选其一)
(1)、JS调用方式:
<script src="[!--news.url--]e/extend/DoTimeRepage/"></script>
(2)、框架调用方式:
<IFRAME frameBorder="0" width="0" height="0" marginWidth="0" marginHeight="0" id="dorepage" name="dorepage" scrolling="no" src="[!--news.url--]e/extend/DoTimeRepage/"></IFRAME>
2、生成相应页面。
(刷新任务增加:后台>“系统”>“计划任务”>“管理刷新任务”。信息定时上下线:增加信息时选项设置里可以设置定时发布。)
******************** 插件目录说明 ********************
/e/extend/DoTimeRepage/ 前台定时执行刷新任务插件目录
└index.php 执行刷新任务程序文件
注意事项:上传插件,在页面中调用插件,生成前台页面,这样当访客访问前台页面时,会触发页面中的插件代码,从而启动刷新计划任务。
例如:你设置了一个计划任务,5分钟后执行。那么访客在5分钟内访问页面,是不会触发计划任务的,必须是5分钟后,访问页面才会触发插件。这一点需要注意一下。
e/extend/DoTimeRepage/index.php源码如下:
<?php require("../../class/connect.php"); require("../../class/db_sql.php"); require("../../class/functions.php"); require "../".LoadLang("pub/fun.php"); require("../../class/delpath.php"); require("../../class/copypath.php"); require("../../class/t_functions.php"); require("../../data/dbcache/class.php"); require("../../data/dbcache/MemberLevel.php"); $link=db_connect(); $empire=new mysqlquery(); $editor=1; @set_time_limit(0); //加载 $incftp=0; if($public_r['phpmode']) { include("../../class/ftp.php"); $incftp=1; } //防采集 if($public_r['opennotcj']) { @include("../../data/dbcache/notcj.php"); } //定时刷新任务 function user_DoTimeRepage(){ global $empire,$dbtbpre; user_DoAutoUpAndDownInfo();//自动上/下线 $todaytime=time(); $b=0; $sql=$empire->query("select doing,classid,doid from {$dbtbpre}enewsdo where isopen=1 and lasttime+dotime*60<$todaytime"); while($r=$empire->fetch($sql)) { $b=1; if($r[doing]==1)//生成栏目 { $cr=explode(',',$r[classid]); $count=count($cr)-1; for($i=1;$i<$count;$i++) { if(empty($cr[$i])) { continue; } $cr[$i]=(int)$cr[$i]; ReListHtml($cr[$i],1); } } elseif($r[doing]==2)//生成专题 { $cr=explode(',',$r[classid]); $count=count($cr)-1; for($i=1;$i<$count;$i++) { if(empty($cr[$i])) { continue; } $cr[$i]=(int)$cr[$i]; ListHtmlIndex($cr[$i],$ret_r[0],0); } } elseif($r[doing]==3)//生成自定义列表 { $cr=explode(',',$r[classid]); $count=count($cr)-1; for($i=1;$i<$count;$i++) { if(empty($cr[$i])) { continue; } $cr[$i]=(int)$cr[$i]; $ur=$empire->fetch1("select listid,pagetitle,filepath,filetype,totalsql,listsql,maxnum,lencord,listtempid,pagekeywords,pagedescription from {$dbtbpre}enewsuserlist where listid='".$cr[$i]."'"); ReUserlist($ur,"../"); } } elseif($r[doing]==4)//生成自定义页面 { $cr=explode(',',$r[classid]); $count=count($cr)-1; for($i=1;$i<$count;$i++) { if(empty($cr[$i])) { continue; } $cr[$i]=(int)$cr[$i]; $ur=$empire->fetch1("select id,path,pagetext,title,pagetitle,pagekeywords,pagedescription,tempid from {$dbtbpre}enewspage where id='".$cr[$i]."'"); ReUserpage($ur[id],$ur[pagetext],$ur[path],$ur[title],$ur[pagetitle],$ur[pagekeywords],$ur[pagedescription],$ur[tempid]); } } elseif($r[doing]==5)//生成自定义JS { $cr=explode(',',$r[classid]); $count=count($cr)-1; for($i=1;$i<$count;$i++) { if(empty($cr[$i])) { continue; } $cr[$i]=(int)$cr[$i]; $ur=$empire->fetch1("select jsid,jsname,jssql,jstempid,jsfilename from {$dbtbpre}enewsuserjs where jsid='".$cr[$i]."'"); ReUserjs($ur,'../'); } } elseif($r[doing]==6)//生成标题分类页面 { $cr=explode(',',$r[classid]); $count=count($cr)-1; for($i=1;$i<$count;$i++) { if(empty($cr[$i])) { continue; } $cr[$i]=(int)$cr[$i]; ListHtml($cr[$i],$ret_r,5); } } else//生成首页 { $indextemp=GetIndextemp(); NewsBq($classid,$indextemp,1,0); } $empire->query("update {$dbtbpre}enewsdo set lasttime=$todaytime where doid='$r[doid]'"); } if($b) { //echo "最后执行时间:".date("Y-m-d H:i:s",$todaytime)."<br><br>"; } } //定时上线/下线 function user_DoAutoUpAndDownInfo(){ global $empire,$dbtbpre,$class_r,$emod_r,$public_r; $todaytime=time(); $sql=$empire->query("select id,classid,infouptime,infodowntime from {$dbtbpre}enewsinfovote where infouptime>0 or infodowntime>0"); while($r=$empire->fetch($sql)) { if(!$class_r[$r[classid]]['tbname']) { continue; } //上线 if($r['infouptime']&&$r['infouptime']<=$todaytime) { $infor=$empire->fetch1("select * from {$dbtbpre}ecms_".$class_r[$r[classid]][tbname]."_check where id='$r[id]' limit 1"); if(!$infor['id']) { continue; } //签发 if($infor['isqf']) { $qfr=$empire->fetch1("select checktno from {$dbtbpre}enewswfinfo where id='$r[id]' and classid='$r[classid]' limit 1"); if($qfr['checktno']!='100') { continue; } } $empire->query("update {$dbtbpre}ecms_".$class_r[$r[classid]][tbname]."_index set checked=1 where id='$r[id]' limit 1"); $pubid=ReturnInfoPubid($r['classid'],$r['id']); $empire->query("update {$dbtbpre}enewsinfovote set infouptime=0 where pubid='$pubid' limit 1"); //互转 MoveCheckInfoData($class_r[$r[classid]][tbname],0,$infor['stb'],"id='$r[id]'"); AddClassInfos($r['classid'],'','+1'); //刷新信息 GetHtml($infor['classid'],$infor['id'],$infor,1); //刷新列表 ReListHtml($r[classid],1); } //下线 if($r['infodowntime']&&$r['infodowntime']<=$todaytime) { $mid=$class_r[$r[classid]][modid]; $tbname=$class_r[$r[classid]][tbname]; $pf=$emod_r[$mid]['pagef']; $stf=$emod_r[$mid]['savetxtf']; //主表 $infor=$empire->fetch1("select * from {$dbtbpre}ecms_".$class_r[$r[classid]][tbname]." where id='".$r[id]."' limit 1"); if(!$infor['id']) { continue; } //签发 if($infor['isqf']) { $qfr=$empire->fetch1("select checktno from {$dbtbpre}enewswfinfo where id='$r[id]' and classid='$r[classid]' limit 1"); if($qfr['checktno']!='100') { continue; } } //分页字段 if($pf) { if(strstr($emod_r[$mid]['tbdataf'],','.$pf.',')) { $finfor=$empire->fetch1("select ".$pf." from {$dbtbpre}ecms_".$tbname."_data_".$infor[stb]." where id='$r[id]' limit 1"); $infor[$pf]=$finfor[$pf]; } if($stf&&$stf==$pf)//存放文本 { $infor[$pf]=GetTxtFieldText($infor[$pf]); } } DelNewsFile($infor[filename],$infor[newspath],$infor[classid],$infor[$pf],$infor[groupid]); $empire->query("update {$dbtbpre}ecms_".$class_r[$r[classid]][tbname]."_index set checked=0,havehtml=0 where id='$r[id]' limit 1"); $pubid=ReturnInfoPubid($r['classid'],$r['id']); $empire->query("update {$dbtbpre}enewsinfovote set infodowntime=0 where pubid='$pubid' limit 1"); //互转 MoveCheckInfoData($class_r[$r[classid]][tbname],1,$infor['stb'],"id='$r[id]'"); AddClassInfos($r['classid'],'','-1'); //刷新列表 ReListHtml($r[classid],1); } } } user_DoTimeRepage();//自动刷新页面 db_close(); $empire=null; ?>