提问人:Andrew G. Johnson 提问时间:1/21/2010 更新时间:1/21/2010 访问量:1587
希望在我的IIS服务器上设置某种cron等效项
Looking to set up some kind of cron-equivalent on my IIS server
问:
我目前正在为我的公司设置一个系统,该系统使用依赖于来自第三方 API 的数据的 IIS 设置上的经典 ASP。问题是 API 响应速度极慢,它发送的只是一个大型 XML 文件或所有数据。足够简单的解决方法是每天请求一次,并设置一个数据库来存储此信息,并让应用程序使用数据库作为源而不是 API。
我在 ASP 文件中编写了数据库填充代码,只需要确保它每天都能运行。最好的方法是什么?我不太熟悉这里的最佳实践,我应该只是让计划任务打开 iexplorer 指向运行爬虫的 URL,还是有某种方法可以通过命令行做到这一点。最担心的是,我正在尝试将如何在 LAMP 上的 PHP 中执行此操作转换为 ASP/WISA,而不是将其视为自己的问题。
答:
您可能希望创建一个在后台运行的 Windows 服务 - 仅使用 ASP 页面很难做到这一点。
评论
在 Windows 计算机上,等效于 cron 是“计划任务”。Windows XP 的操作方法位于此处:http://support.microsoft.com/kb/308569。在大多数版本的 Windows 上都可以执行类似的步骤。
如果将数据筛选代码放在 asp 文件中,则可以使用以下 VBS 脚本向该文件发出 http 请求:
Const WinHttpVersion = "5.1"
Dim objWinHttp, strURL
' Request URL from 1st Command Line Argument. This is
' a nice option so you can use the same file to
' schedule any number of differnet scripts.
strURL = WScript.Arguments(0)
' For more WinHTTP v5.0 info, go to Registry Editor to find out
' the version of WinHttpRequest object.
Set objWinHttp = CreateObject("WinHttp.WinHttpRequest." & WinHttpVersion)
If IsObject(objWinHttp) Then
objWinHttp.Open "GET", strURL
objWinHttp.Send
If objWinHttp.Status <> 200 Then
Err.Raise 1, "HttpRequester", objWinHttp.ResponseText
End If
Set objWinHttp = Nothing
End If
If Err.Number <> 0 Then
' Something has gone wrong... do something about it...
End If
对此的调用如下所示:
HttpRequester.vbs http://localhost/MyApp/loadData.asp
评论
我建议不要使用脚本调用来实现此目的。最好使用从任务计划程序调用的 .Net 控制台应用程序来完成此操作。
评论
按计划的时间间隔调用 ASP 页是微不足道的。只需使用 wget 或 curl 的 Windows 端口(如果需要,您可以使用 IE)并设置计划任务以按您想要的时间间隔加载页面。
这不需要编写脚本,只需将可执行路径作为要运行的进程,并将 URL 放在参数字段中(加上一些其他开关,具体取决于您最终使用的程序)。
评论