日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > windows >内容正文

windows

使用windows服务更新站点地图

發(fā)布時間:2025/7/14 windows 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用windows服务更新站点地图 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

由于公司平臺訪問人數(shù)逐漸增多,公司項目的數(shù)據(jù)庫已經(jīng)幾次出現(xiàn)宕機現(xiàn)象。為減輕數(shù)據(jù)庫壓力,我上個月對公司項目做了下調(diào)整。把新聞板塊提取出來單獨一個站點,單獨一個數(shù)據(jù)庫。減少了主站點和數(shù)據(jù)庫的負(fù)擔(dān)和壓力。

但放在線上一個月,新聞新的發(fā)布數(shù)量最少已經(jīng)有500篇左右。百度只收錄了70個左右,于是想到可能是沒有站點地圖造成的。但怎么定時更新站點地圖呢?

我嘗試使用windows服務(wù)來定時更新站點地圖。

=====================進入正題=============================

首先需要了解下幾個問題。

1、百度收錄的站點地圖(sitemap)的格式。詳情請查看該鏈接:查看

目前我只用到了xml格式的站點地圖,就講下xml格式的站點地圖。

xml格式:

各個標(biāo)簽的解釋:

<loc>www.example1.com</loc>該頁的網(wǎng)址。該值必須少于256個字節(jié)(必填項)。格式為<loc>您的url地址</loc>

<lastmod>2010-01-01</lastmod>該文件上次修改的日期(選填項)。格式為<lastmod>年-月-日</lastmod>

<changefreq>?always?</?changefreq?>頁面可能發(fā)生更改的頻率(選填項)?。

有效值為:always、hourly、daily、weekly、monthly、yearly、never

<priority>1.0</priority?>此網(wǎng)頁的優(yōu)先級。有效值范圍從?0.0?到?1.0?(選填項)?。0.0優(yōu)先級最低、1.0最高。

2、站點地圖更新的頻率問題

由于公司新聞更新一般時間固定在9:30-18:00。每天大概發(fā)布10——50篇新聞,所以我設(shè)想更新站點地圖的時間在:9:00——19:00,每3個小時更新一次,其他時間不做任何操作,降低數(shù)據(jù)庫查詢的負(fù)擔(dān)。

開始寫windows 服務(wù)。

1、新建windows服務(wù),給windows起個名字

?

2、添加安裝程序

雙擊Service1.cs進入視圖界面,右鍵,選擇“添加安裝程序”

?

添加以后的效果。

?

serviceInstaller1:服務(wù)安裝組件。(主要用于設(shè)置 服務(wù)名稱、服務(wù)描述、服務(wù)是否開機啟動或延遲啟動、服務(wù)啟動方式等)

serviceProcessInstaller1:服務(wù)進程安裝組件(主要用戶設(shè)置運行服務(wù)的賬戶類型,如:User、LocalService、NetworkService、LocalSystem等)

serviceInstaller1的屬性設(shè)置(快捷鍵F4):

?

屬性說明:

DelayedAutoStart:設(shè)置是否自動啟動

Description:服務(wù)描述

ServiceName:服務(wù)名稱

StartType:啟動類型。有三種:Manual(啟動)、Automatic(自動)、Disabled(不啟動)

serviceProcessInstaller1屬性設(shè)置(快捷鍵F4):

屬性說明:

Account:運行服務(wù)的賬戶類型。有四種:User、LocalService、NetworkService、LocalSystem。

我選擇的是LocalSystem,意思是:當(dāng)前系統(tǒng)都能運行。

3、定時觸發(fā)問題的一些需要注意的誤區(qū)。

定時觸發(fā),大家肯定想到的是Timer組件,但一定要記住。windows服務(wù)下是沒有Timer控件的。。。。這里看到的Timer組件是不會定時觸發(fā)的,需要自己實現(xiàn)Timer定時觸發(fā)的事件,本人曾在此坑深陷多時。。。。

由于本人為了實現(xiàn)定時觸發(fā)的事件可控性和可修改性。增加了一個配置文件。配置文件添加方式如圖:

windows服務(wù)項目——右鍵——添加——新建項

?

配置文件設(shè)置:

?

4、定時windows服務(wù)代碼:

public partial class NPcgoNewsService : ServiceBase{Timer aTimer = new Timer(); //System.Timers,不是form的 public NPcgoNewsService(){InitializeComponent();}protected override void OnStart(string[] args){//一個一直重寫sitemap的服務(wù)aTimer.Elapsed += new ElapsedEventHandler(aTimer_Tick);aTimer.Enabled = true; aTimer.Interval = int.Parse(PublicMethods.GetAppSettings("NewsSiteUpdateTime")) * 1000; //配置文件中配置的秒數(shù) aTimer.Start();}protected override void OnStop(){this.aTimer.Enabled = false;this.aTimer.Stop();}/// <summary>/// timer定時觸發(fā)/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void aTimer_Tick(object sender, ElapsedEventArgs e){//調(diào)用該服務(wù)的時間為上午9點——下午18點,其他時間不調(diào)用if (DateTime.Now.Hour >= 9 && DateTime.Now.Hour <= 19){MakeSiteMap make = new MakeSiteMap();make.GetBaiDuSiteMap();}}}

生成百度地圖的方法(GetBaiDuSiteMap):

/// <summary>/// 生成百度站點地圖/// </summary>/// <returns></returns>public void GetBaiDuSiteMap(){XmlDocument xmlDoc = new XmlDocument();//獲取新聞?wù)军c地圖的本地保存路徑string path = Path.Combine(PublicMethods.GetAppSettings("NewsSiteMapPath"));xmlDoc.Load(path);//查找根節(jié)點XmlNode root = xmlDoc.SelectSingleNode("urlset");//刪除以前的所有老節(jié)點 root.RemoveAll();#region 平臺公告//查詢最新100條平臺公告List<IT_NEWS> platformnotice = GetPlatformNotice();if (platformnotice != null && platformnotice.Count > 0 && platformnotice[0].newsId > 0){foreach (IT_NEWS platformNoticeNews in platformnotice){XmlElement xesub1 = xmlDoc.CreateElement("url");XmlElement xe1 = xmlDoc.CreateElement("loc");xe1.InnerText = "http://news.npcgo.com" + "/notice-" + platformNoticeNews.newsType + "-" + platformNoticeNews.newsId + ".html";XmlElement xe2 = xmlDoc.CreateElement("lastmod");xe2.InnerText = Convert.ToDateTime(platformNoticeNews.newsCreateTime).ToString("yyyy-MM-dd");XmlElement xe3 = xmlDoc.CreateElement("changefreq");xe3.InnerText = "daily";XmlElement xe4 = xmlDoc.CreateElement("priority");xe4.InnerText = "0.2";xesub1.AppendChild(xe1);xesub1.AppendChild(xe2);xesub1.AppendChild(xe3);xesub1.AppendChild(xe4);root.AppendChild(xesub1);}}#endregionxmlDoc.AppendChild(root);xmlDoc.Save(path);}

============代碼部分完成====================

安裝windows服務(wù):

需要寫一個windows服務(wù)安裝的批處理和卸載的批處理,都放在windows服務(wù)項目的bin/Debug文件夾下。

安裝服務(wù),install.bat代碼:

%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\installutil.exe GameTradingNewsService.exe Net Start NPCgoNewsServices sc config NPCgoNewsServices start= auto

解釋:

GameTradingNewsService.exe 是windows服務(wù)項目編譯以后bin文件中的exe程序的名稱。
Net Start xxx 是開啟xxx服務(wù)
NPCgoNewsServices 是windows服務(wù)名稱(即:serviceInstaller1屬性面板設(shè)置的服務(wù)名稱(serviceName屬性))
sc config NPCgoNewsServices start= auto 是設(shè)置windows服務(wù)啟動方式為自動

卸載服務(wù) unstall.bat代碼:
%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\installutil.exe /u GameTradingNewsService.exe GameTradingNewsService.exe 是windows服務(wù)項目編譯以后bin文件中的exe程序的名稱

至此,一個服務(wù)是徹底完成。



轉(zhuǎn)載于:https://www.cnblogs.com/woaic/p/3665643.html

總結(jié)

以上是生活随笔為你收集整理的使用windows服务更新站点地图的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。