论坛风格切换切换到宽版
  • 876阅读
  • 0回复

[问题求助]利用好Windows系统服务资源自动更新网站节约站长时间 [复制链接]

上一主题 下一主题
离线123456yyw
 
发帖
35
C币
168
威望
33
贡献值
0
银元
0
铜钱
161
人人网人气币
0
只看楼主 倒序阅读 使用道具 楼主  发表于: 2011-09-13
  
  应用背景:作为一个站长,为了管理好网站,也为了讨好搜索引擎,每天都需要在不同的时段更新网站的内容,有的站长需要维护几个网站,每天的工作量可想而知,如果逢年过节,站长没有在电脑旁边或者无法上网,这个维护工作也就无法进行。
  使用原理:本文介绍了一种方法来自动更新网站内容,采用一个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
   xp sp3系统下载采用一个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();
      ghost xp sp3
  }
  catch (Exception ee)
  {
  Log.SaveException(ee);
  }
  }
  void YourTask()
  {
  count++;
  if (count 》 10000)
  count = 0;
  for (int i = 0; i 《 xmllist.Count; i++)
  {
  string url = xmllist[i].Attributes[url].Value;
  string time = xmllist[i].Attributes[time].Value;
  //Log.SaveNote(url + - + time);
  DateTime workTime = DateTime.Parse(DateTime.Now.ToShortDateString() + + time);
  //lastwork
  if (DateUtil.DateDiff(DateUtil.DateInterval.Minute, workTime, DateTime.Now) == 0)
  {
  //到了执行时间
  if (DateUtil.DateDiff(DateUtil.DateInterval.Minute, workTime, lastworktime) != 0)
  {
  //访问xp系统下载网址
  visit(url);
  lastworktime = DateTime.Now;
  }
  }
  }
  }
  void visit(string url)
  {
  HttpWebRequest myHttpWebRequest = null;
  HttpWebResponse myHttpWebResponse = null;
  Stream receiveStream = null;
  try
  {
  myHttpWebRequest = (HttpWebRequest)WebRequest.Create(url);
  myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse();
  receiveStream = myHttpWebResponse.GetResponseStream();//得到回写的字节流
  Log.SaveNote(访问: + url);
  }
  catch (Exception ex)
  {
  Log.SaveNote(访问最新系统下载失败: + url);
  Log.SaveException(ex);
  }
  finally
  {
  if (receiveStream != null)
  receiveStream.Close();
  if (myHttpWebResponse != null)
  myHttpWebResponse.Close();
  }
  }
  2) 网站端:
  网站端应该采用审核机制,比如一个表News表,设置字段isaccept为审核字段,1表示已审核,0表示未审核,新增的内容默认为未审核0。我们在平时的时候多添加一些内容到未审核库中,然后交给程序来自动更新。xp系统之家更新程序可以采用任何动态网页技术,asp、php、jsp都可以,该程序的作用就是把未审核的内容更改为审核状态,为了灵活起见,可以设置一个表示更新数量的查询字符串变量给程序,如num,则更新3条的网址就变成http://www.xxxxxxxxxx.com这种形式,这个网址可以在Windows服务的配置文件中设置好。本文最新xp系统下载的重点是讲采用Windows服务来进行网站更新,所以具体网站端的代码我就没有写出来了,各位站长可以根据自己网站的情况来编写。Windows服务是与网站端没有业务逻辑关联的,windows服务只管定期的来访问网站端的更新网址,而网站端的更新网址只管更新的业务逻辑。
评价一下你浏览此帖子的感受

精彩

感动

搞笑

开心

愤怒

无聊

灌水
快速回复
限100 字节
如果您在写长篇帖子又不马上发表,建议存为草稿
 
上一个 下一个