透過ASP執行VBS

當有需要執行一個大量資料更新的邏輯時,若單純使用ASP程式雖然可以達到效果,但往往因為執行時間較長,導致一些問題產生,

  1. Request-Response時間很長時,若有其他在相同目錄下的網頁會發生無法正常瀏覽。原因是被判定為同一Session,必需要等上一個執行作業完成後,才會輪到後來執行的網頁解譯。
  2. 若想要中斷剛剛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,遶一下彎就可以了


留言

這個網誌中的熱門文章

ORA-12514: TNS: 監聽器目前不知道連線描述區中要求的服務

Oracle 例外控制(Exception Control)

Oracle 工作排程 DBMS_JOB 筆記