帝国cms定时自动执行刷新任务插件DoTimeRepage
帝国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;
- ?>