帝国cms⾃动更新⽣成⼀次内容页
每分钟⾃动更新⽣成⼀次内容页(注:不是栏⽬或者列表...是⽂章)
最近做⽹站的时候碰到⼀个问题,每个页⾯都要更新,因为每个页⾯是直接获取新浪和淘宝的数据还有国外的⼀个⽹站,如果批量更新的话别⼈会直接封掉IP。⽤了论坛⾥⾯的计划任务功能。
那边提供了两种解决⽅案,但是弊端也是显⽽易见:
⼀种是开着后台,电脑要⼀直开着,另外⼀种要放⾸页等页⾯⾥⾯。我觉得这样做都太耗青春了!更苦逼的是⽆法达到我的⽬的,更新⽣成内容页。
那有没有更好的⽅法去做呢?
弄了半天终于到了解决⽅案,写⼀段代码存为PHP⽂件,间隔⼀段时间后如果满⾜这个要求便⾃动⽣成内容页⾯,但是这个页⾯要持续的有⼈访问才⾏,这个好解决,可以挂机的代刷⽹站。监控平台都可以实现。⽐如本⼈的免费监控⽹站就是15分钟过来访问你,刚好可以利⽤起来,这是免费劳动⼒。
我不知道这样执⾏代码安不安全,如果每天都需要更新⽹站,那我觉得没有⽐这个更好的⽅法了。
废话就说到这⾥实现的⽅法:
你如果要操作,数据类型更我⼀样的话,只需要改动$ee2每组的条数,当然86400/$ee2,要整数的哦。
<?php
//路径⼀定要⾼对,不然不到以下⽂件是实现不了,还会发⽣错误的。
require("../../class/connect.php");
require("../../class/db_sql.php");
require("../../class/functions.php");
require '../'.LoadLang("pub/fun.php");
require("../../class/t_functions.php");
require("../../data/dbcache/class.php");
require("../../data/dbcache/MemberLevel.php");
$link=db_connect();
$empire=new mysqlquery();
@set_time_limit(0);//防⽌时间过期
$num=1;//可以设置get获取参数
echo'相减的时间<br />';
echo $time_x=strtotime('now')-strtotime('today') ;//从凌晨开始算时间到现在为多少秒
$ee1=$empire->gettotal("select count(*) as total from {$dbtbpre}ecms_news"); //统计⽂章条数
$ee2=96;//每96条为⼀组
$ee3=fmod($ee1,$ee2);//余数帝国cms文库模板
$ee4=$ee1/$ee2 ;
$ee5=floor($ee4);//商
if($ee3!=0){
$ee5=$ee5+1;//如果除不尽那么再多⼀组
}
echo '⼀共'.$ee1.'条'.$ee5.'组这是第'.$num.'组<br />';
$s_n=($num-1)*$ee2;
$s_nx=$ee2;
if($ee5==$num){
$s_nx=$ee2-($ee5*$ee2-$ee1);
}
$sql=$empire->query("select * from {$dbtbpre}ecms_news order by newstime limit $s_n,$s_nx");
$i=0;        //
while($r=$empire->fetch($sql)){//循环获取查询记录
$i1=$i*86400/$ee2;
$i2=($i+1)*86400/$ee2;
if($time_x>$i1&&$time_x<$i2){
$id=$r['id'];
GetHtml($r2['classid'],$id,$r2,0);
}
$i++;
}
db_close();
$empire=null;
>
最后把这个⽂件的链接直接给监控平台去执⾏就OK了。
为什么要分组,如果数据是⼏万条那就得分组,像我这样15分钟⼀条要搞定2万条数据那得到猴年马⽉。因此如果是⼤数据就得分组来操作。
⽤这个⽅法还可以做很多事情,⽐如定时采集,定时截图什么的。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。