应用背景:作为
个站长
为了管理好网站WebSite
也为了讨好搜索引擎
每天都需要在区别
时段更新网站WebSite
内容
有
站长需要维护几个网站WebSite
每天
工作量可想而知
如果逢年过节
站长没有在电脑旁边或者无法上网
这个维护工作也就无法进行
使用原理:本文介绍了
种思路方法来自动更新网站WebSite内容
采用
个Windows系统服务
设置好它
URL访问地址
每天在特定时间内访问需要更新内容
网站WebSite
特殊页面(假定这个页面为A);在网站WebSite端
设置
个审核机制
只有通过审核
内容才能显示在网站WebSite前端
新加
信息默认是不审核
页面A
作用就是从未审核信息中挑出几条进行审核
这样就更新了网站WebSite内容
对于静态首页
页面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是具体
网址
设置为网站WebSite自动更新
url地址
可以带查询
串来设置更新
数量
time表示每天访问
时间
time只能精确到1分钟
而且必须保证每个item在同
分钟内只有
个url任务
采用
个定时器
每隔20秒扫描
下配置项中是否有需要访问
网址
如果有则访问
次这个网址
相关代码如下:
public Job
{
.Timers.Timer myTimer = .Timers.Timer(20000);
myTimer.Elapsed ElapsedEventHandler(myTimer_Elapsed);
myTimer.Enabled = true;
myTimer.AutoRe = true;
XmlDocument xml = XmlDocument;
xml.Load(AppDo.CurrentDo.BaseDirectory + ConfigurationManager.AppSettings["xmlfile"]);
xmllist = xml.SelectNodes("//root/Urls/item");
}
void myTimer_Elapsed(object source, ElapsedEventArgs e)
{
try
{
Log.SaveNote(DateTime.Now.("yyyy-MM-dd HH:mm:ss") + " Heart Work!(心跳检测)");
YourTask;
}
catch (Exception ee)
{
Log.SaveException(ee);
}
}
void YourTask
{
count;
(count > 10000)
count = 0;
for ( i = 0; i < xmllist.Count; i)
{
url = xmllist[i].Attributes["url"].Value;
time = xmllist[i].Attributes["time"].Value;
//Log.SaveNote(url + "-" + time);
DateTime workTime = DateTime.Parse(DateTime.Now.ToShortDateString + " " + time);
//lastwork
(DateUtil.DateDf(DateUtil.DateInterval.Minute, workTime, DateTime.Now) 0)
{
//到了执行时间
(DateUtil.DateDf(DateUtil.DateInterval.Minute, workTime, lastworktime) != 0)
{
//访问网址如 手机主题 http://www.shouji138.com
visit(url);
lastworktime = DateTime.Now;
}
}
}
}
void visit( 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
{
(receiveStream != null)
receiveStream.Close;
(myHttpWebResponse != null)
myHttpWebResponse.Close;
}
}
2) 网站WebSite端:
网站WebSite端应该采用审核机制
比如
个表News表
设置字段isaccept为审核字段
1表示已审核
0表示未审核
新增
内容默认为未审核0
我们在平时
时候多添加
些内容到未审核库中
然后交给
来自动更新
更新
可以采用任何动态网页技术
asp、php、jsp都可以
该
作用就是把未审核
内容更改为审核状态
为了灵活起见
可以设置
个表示更新数量
查询
串变量给
如num
则更新3条
网址就变成http://www.shouji138.com/A.asp?num=3这种形式
这个网址可以在Windows服务
配置文件中设置好
本文
重点是讲采用Windows服务来进行网站WebSite更新
所以具体网站WebSite端
代码我就没有写出来了
各位站长可以根据自己网站WebSite
情况来编写
Windows服务是和网站WebSite端没有业务逻辑关联
windows服务只管定期
来访问网站WebSite端
更新网址
而网站WebSite端
更新网址只管更新
业务逻辑
最后
提供下工具和源代码
下载地址:
Windows服务工具下载:http://www.shouji138.com/aspnet2/files/autopub.rar
Windows服务源码下载: http://www.shouji138.com/aspnet2/files/autopubsource.rar