处理 MSXML 超时

Handling an MSXML timeout

我们的一个网站有一个小故障,有时会导致它崩溃 - 后端需要重新启动。替代品尚未准备好投入生产,因此我创建了一个 VBS 脚本,用于轮询服务器并在以下情况下重启服务器:

a) HTTP 状态代码 <> 200,或者 b) 页面加载但在页面上找不到子字符串。

如果tomcat服务没有响应,HTTP状态检查超时;如果发生这种情况,我想调用一个函数。是否可以捕获并处理超时?这是我的相关代码片段的片段。

xmlhttp.setOption 2, 13056
xmlhttp.open "get", "https://www.mywebsite.com/thisurl", false
xmlhttp.send

if xmlhttp.status <> 200 then
    call restartTomcat()
    call emailAlert()
end if

提前致谢。

很遗憾,您无法在 VBScript 中创建对象事件处理程序。

也许您可以使用 HTTP 请求对象的 .setTimeouts resolveTimeout, connectTimeout, sendTimeout, receiveTimeout 方法。在调用 send 方法之前添加它。参数说明如下:

resolveTimeout

长整数。该值用于将主机名(如"www.microsoft.com")映射到IP地址;默认值是无限的,意味着没有超时。

连接超时

长整数。该值用于与目标服务器建立通信套接字,默认超时值为60秒。

发送超时

长整数。该值适用于在通信套接字上向目标服务器发送单个请求数据包(如果有)。发送到服务器的大请求通常会被分解成多个数据包;发送超时适用于单独发送每个数据包。默认值为 30 秒。

接收超时

长整数。该值适用于从目标服务器接收响应数据包。大响应将被分解成多个数据包;接收超时适用于从套接字中获取每个数据包。默认值为 30 秒。

您可以在 send 通话后检查当前状态。这应该可以帮助您处理无响应的服务器。