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

<?php
if(!defined('InEmpireCMS'))
{
        exit();
}

        echo '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';
?>

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

<?php
if(!defined('InEmpireCMS'))
{
        exit();
}

        echo 'http://www.***.com/e/tasks/autocheck.php?pwd=password';
?>

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

$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文件代码也共享如下:

http://www.***.com/e/admin/task.php

function abc() {
document.getElementById("MFrm1").src='http://www.***.com/e/admin/task.php';
}
setInterval('abc()',900000);

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

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

共有 0 条评论