日期:2008-03-18  浏览次数:20485 次

Aiyiweb.Com提示:作为一个站长,为了管理好网站,也为了讨好搜索引擎,每天都需求在不同的时段更新网站的内容,有的站长需求维护几个网站,每天的任务量可想而知,如果逢年过节,站长没有在电脑旁边或者无法上网,这个维护任务也就无法进行。

使用背景:作为一个站长,为了管理好网站,也为了讨好搜索引擎,每天都需求在不同的时段更新网站的内容,有的站长需求维护几个网站,每天的任务量可想而知,如果逢年过节,站长没有在电脑旁边或者无法上网,这个维护任务也就无法进行。

       使用原理:本文引见了一种方法来自动更新网站内容,采用一个Windows系统服务,设置好它的URL访问地址,每天在特定时间内访问需求更新内容的网站的特殊页面(假定这个页面为A);在网站端,设置一个审核机制,只要通过审核的内容才能显示在网站前端,新加的信息默认是不审核,页面A的作用就是从未审核信息中挑出几条进行审核,这样就更新了网站内容,对于静态首页的,页面A还可以生成下首页静态页面。当然页面A还可以做更多的用途,如备份数据库、更改到期用户形状、删除无用的临时文件等。
       详细原理:
1)        Windows服务端:
              Windows服务采用.Net Framework2.0框架,所以使用时应该先安装好.Net Framework2.0,下载地址:
http://www.microsoft.com/downloads/details.aspx?FamilyID=0856EACB-4362-4B0D-8EDD-AAB15C5E04F5&displaylang=zh-cn
       采用一个xml文件存储配置信息,里面存储需求访问的网址,示例结构如下:
<?xml version="1.0" encoding="utf-8" ?>
<root>
  <Urls>
    <item url="http://www.shouji138.com" time="3:59"/>
    <item url="http://www.baidu.com" time="11:59"/>
    <item url="http://www.baidu.com" time="13:59"/>
    <item url="http://www.baidu.com" time="15:59"/>
    <item url="http://www.baidu.com" time="16:59"/>
  </Urls>
</root>
一个item代表一次访问,url是具体的网址,设置为网站自动更新的url地址,可以带查询字符串来设置更新的数量,time表示每天访问的时间,time只能精确到1分钟,而且必须保证每个item在同一分钟内只要一个url任务。
       程序采用一个定时器,每隔20秒扫描一下配置项中能否有需求访问的网址,如果有则访问一次这个网址。相关代码如下:
public Job()
        {
            System.Timers.Timer myTimer = new System.Timers.Timer(20000);
            myTimer.Elapsed += new ElapsedEventHandler(myTimer_Elapsed);
            myTimer.Enabled = true;
            myTimer.AutoReset = true;
            XmlDocument xml = new XmlDocument();
            xml.Load(AppDomain.CurrentDomain.BaseDirectory + ConfigurationManager.AppSettings["xmlfile"]);
            xmllist = xml.SelectNodes("//root/Urls/item");
 
        }
 
        void myTimer_Elapsed(object source, ElapsedEventArgs e)
        {
            try
            {
                Log.SaveNote(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + " Heart Work!(心跳检测)");
                YourTask();
            }
            catch (Exception ee)
            {
                Log.SaveException(ee);
            }
 &n