javascript|定時|應用執行個體
作定時處理的話,我們首先考慮到的就是自己寫個程式,然後把這個程式部署到Win的計劃任務中。
這個程式可以是簡單的批處理dat檔案,也可以是一個js檔案。當然更複雜的dll,exe也可以。
考慮到方便性,易維護,我推薦用js檔案。
下面是個簡單的js範例檔案。
他的功能是:訪問一個頁面,如果發現這個頁面異常重起iis服務。
把它部署到計劃任務中,就可以對Web網站進行監控。
if(!CheckUrl())
{
WScript.Echo("iisreset");
var s = new ActiveXObject("WScript.Shell");
s.Run("iisreset");
}
else
{
WScript.Echo("OK");
}
function CheckUrl()
{
try
{
var xh=new ActiveXObject("Microsoft.XMLHTTP");
xh.open("GET","http://localhost/quickstart/aspplus/doc/businessobjs.aspx",false);
xh.send("");
return xh.status == 200;
}
catch( X )
{
return false;
}
}
以上使用 Microsoft.XMLHTTP 如果一個網站沒有響應,他會一直等下去。改成 MsXML2.ServerXMLHTTP 就可以避免這個問題。參考下面函數:
function CheckUrl()
{
try
{
// 使用這個,可以設定逾時時間,不用一直等待。
var XMLServerHttp = new ActiveXObject("MsXML2.ServerXMLHTTP");
var lResolve = 5 * 1000;
var lConnect = 5 * 1000;
var lSend = 15 * 1000;
var lReceive = 15 * 1000;
XMLServerHttp.setTimeouts(lResolve, lConnect, lSend, lReceive);
XMLServerHttp.open("GET", "http://localhost/quickstart/aspplus/doc/businessobjs.aspx", false);
XMLServerHttp.send();
return XMLServerHttp.status == 200;
}
catch( X )
{
return false;
}
}
如果你要訪問的頁面是需要身分識別驗證的。
請參考:
oXMLHttpRequest.open(Method, Url, Async, User, Password)
http://www.w3schools.com/dom/dom_http.asp
以上解決方案,感謝Lostinnet和思歸的協助。