透過ASP執行VBS
當有需要執行一個大量資料更新的邏輯時,若單純使用ASP程式雖然可以達到效果,但往往因為執行時間較長,導致一些問題產生,
如果把資料處理邏輯改寫至VBS,而ASP只扮演啟動VBS的角色,則可以快速的結束Request-Reponse的作業,可以在Server利用微軟工具Process Explorer看到正在執行的程序(工作管理員只能看到多個wscript.exe的程序,無法知道實際執行的VBS檔名),可以視情況刪除程序。
※ Process Explorer需要設定欄位,可參考此網址
http://alexlucy99.blogspot.tw/2014/11/process-explorer.html
執行環境:
ASP Code
備註:
- Request-Response時間很長時,若有其他在相同目錄下的網頁會發生無法正常瀏覽。原因是被判定為同一Session,必需要等上一個執行作業完成後,才會輪到後來執行的網頁解譯。
- 若想要中斷剛剛Submit的資料處理,經實測後,就算把IIS重新啟動(iisreset /restart),程序依然無法中止,必需要把Server重開機後,才會真正刪除程序
如果把資料處理邏輯改寫至VBS,而ASP只扮演啟動VBS的角色,則可以快速的結束Request-Reponse的作業,可以在Server利用微軟工具Process Explorer看到正在執行的程序(工作管理員只能看到多個wscript.exe的程序,無法知道實際執行的VBS檔名),可以視情況刪除程序。
<工作管理員>
<Process Explorer>
※ Process Explorer需要設定欄位,可參考此網址
http://alexlucy99.blogspot.tw/2014/11/process-explorer.html
執行環境:
- Windows 2003 Server
- IIS
- ASP
- VBS
ASP Code
set wshell = CreateObject("WScript.Shell") wshell.run "cmd.exe /c cscript D:\VBS_TEST.vbs", 0, false set wshell = nothing
備註:
- 測試時發現一個狀況,如果執行的VBS有被Windows工作排程設定,ASP是無法正常執行VBS,原因尚未找出來。暫時可以解決的方法為工作排程連結一個批次檔(BAT),而該批次檔再去執行VBS,遶一下彎就可以了
留言
張貼留言