前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >帝国CMS全自动采集——发布更新教程

帝国CMS全自动采集——发布更新教程

作者头像
用户1272546
发布2018-06-05 11:15:51
7.3K0
发布2018-06-05 11:15:51
举报
文章被收录于专栏:源码之家源码之家

首先说明,我对于帝国CMS,也是第一次接触,而且对于程序开发,我本身就是门外汉,我只是一个运用者(做垃圾站的),以前一直用DEDECMS+采集侠,但介于织梦对于处理百万级数据以上时,确实负载较高,我就想用帝国CMS尝试做做垃圾站看看。大家知道,做垃圾站不像做正规站,手动更新,做垃圾站是越自动越好,最好不用人去管理就最好了。这就是我研究的方向,好,废话少说。 一、实现自动采集 实现自动采集我就是对着这篇文章做的: http://bbs.phome.net/ShowThread/?threadid=213900&forumid=13 当然,你不止一个采集节点要采集的,可以把多个节点体现在一个语句中,以下是我正在使用的语句:

代码语言:javascript
复制
<?php
if(!defined('InEmpireCMS'))
{
        exit();
}

        echo '<iframe src="http://www.***.com/e/admin/DoCj.php?enews=DoCj&classid%5B%5D=11&classid%5B%5D=12&classid%5B%5D=13&classid%5B%5D=14&classid%5B%5D=15&classid%5B%5D=16&classid%5B%5D=17&classid%5B%5D=18&classid%5B%5D=19&classid%5B%5D=20&Submit=%E6%89%B9%E9%87%8F%E9%87%87%E9%9B%86%E8%8A%82%E7%82%B9" id="MFrm0" width="500" height="300" frameborder="0" style="border:2px solid #ff6600;"></iframe>';
?>

二、实现自动审核、更新 为了实现自动审核、更新,我几乎把帝国论坛里的贴子都翻了个底朝天,虽然上面那篇贴子里说也可以实现自动审核,但我不会,真不会。最后找到了这篇文章: http://www.itkubo.com/20130371.html 这里不得不提一下,上面这篇文章的作者老北真是个热心的人,多次请教,都详细地给我解答,在这里,再一次表示感谢! 用上面的这个方法自动更新的话,要注意几点: 1、触发上面代码时,要加上密码,例如我的触发方法是,借用第一点自动采集触发的思路,也利用计划任务来触发,在e/tasks/目前下建立一个文件,写上触发代码来触发这段审核代码,然后再利用计划任务来触发。 具体举上我的例子,在e/tasks/下建立一个zdgx.php文件,代码如下:

代码语言:javascript
复制
<?php
if(!defined('InEmpireCMS'))
{
        exit();
}

        echo '<iframe src="http://www.***.com/e/tasks/autocheck.php?pwd=password" id="MFrm0" width="500" height="300" frameborder="0" style="border:2px solid #ff6600;"></iframe>';
?>

然后将zdgx.php列到计划任务中。 2、如果栏目比较多,上了二三百个的话,在老北那代码里,建议使用分时段审核,否则负载会有点高。(分时段代码老北代码里,只是注释了,另外,其实可以不止分三个时间段,我做的是每小时审核几个栏目,反正你可以按你栏目的多少来确实,例如我的大约二百四十个栏目,我就设置每小时审核更新十个栏目),我把我分段审核的代码给大家共享一下:

代码语言:javascript
复制
$hours = date ( 'H' );
 switch($hours){ 
	 //频道和列表 
	 case '1': $where = "bclassid = 0 or classid between 1 and 10"; 
	 break; 
	 case '2': $where = "bclassid = 0 or classid between 11 and 20"; 
	 break; 
	 case '3': $where = "bclassid = 0 or classid between 21 and 30"; 
	 break; 
	 case '3': $where = "bclassid = 0 or classid between 31 and 40"; 
	 break; 
	 case '4': $where = "bclassid = 0 or classid between 41 and 50"; 
	 break; 
	 case '5': $where = "bclassid = 0 or classid between 51 and 60"; 
	 break; 
	 case '6': $where = "bclassid = 0 or classid between 61 and 70"; 
	 break; 
	 case '7': $where = "bclassid = 0 or classid between 71 and 80"; 
	 break; 
	 case '8': $where = "bclassid = 0 or classid between 81 and 90"; 
	 break; 
	 case '9': $where = "bclassid = 0 or classid between 91 and 100"; 

三、挂着计划任务来驱动采集、审核吧。 这个还有一点可以说一下,按道理,我们可以一直开着后台,打开“运行计划任务页面”即可(也就是运行/e/admin/task.php页面),但我觉得还是不太好。 我试了一下,一直开着后台,本身也就太好,不太安全撒,另外网页的COOKIE会失效吧,应该过段时间就要重新登陆吧。这里,我想了个其他办法,自动刷新这个“计划任务页面”,保持他的COOKIE有效。 好吧,我是在网站的根目录建了个HTML文件,平时在VPS打开这个文件即可,不用打开帝国后台了。 这个HTML文件代码也共享如下:

代码语言:javascript
复制
<iframe src="http://www.***.com/e/admin/task.php" id="MFrm1" width="500" height="500" frameborder="0" style="border:2px solid #ff6600;"></iframe>
<script type="text/javascript">
function abc() {
document.getElementById("MFrm1").src='http://www.***.com/e/admin/task.php';
}
setInterval('abc()',900000);
</script>

里面的900000是指隔这么多毫秒就刷新一下这个页面。

好了,完了,你最后要做的就是一直打开最后这个HTML文件,你的网站就不停地采集、更新、采集、更新。 以上方法是我正在做的一个垃圾站:http://www.cnbj.org正在使用的方法,里面的代码也是正在使用的,哦记得把***.com 改为你自己的域名哦。。。。。。。。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档