0

我编写了一个 php 脚本,用于检查几个不同服务器的状态,确定它们是否在线,然后输出它们的版本信息以及提供更新服务器上数据库的选项。

我遇到的问题是,当脚本到达脱机的服务器时,它会在执行检查时挂起很长时间。我认为解决这个问题的一个好方法可能是使用 jQuery 或 XAJAX 之类的东西来异步加载不同的服务器,这样一个服务器就不会挂起整个脚本。

我调用一个函数来开始所有检查,并回显服务器信息:

    outputServerInfo("addressOfServerHere", "nameofServerHere", array("Names", "of", "databases");

我的问题是:异步加载这些服务器的最佳方法是什么?如果我可以让它在执行检查时在每台服务器的位置说“正在加载...”,那将是理想的。我以前没有使用过 jQuery 或 XAJAX,所以我认为最好在社区中获得一些意见。谢谢!

编辑:我现在已经让它工作并加载了我所有的服务器,但我还有另一个问题。

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
<script type="text/javascript">

document.write("<h1>Server Manager</h1><form method='post' name='form1'>");

function server_output(serverName) {
        document.write("<div id=" + serverName + "Loading>Loading " + serverName + "...</div>");
        $.ajax({
        url  : 'serverManager.php',
        async: true,
        type : 'POST',
        data : 'serverName=' + serverName,
        success : function(msg){
            document.write("<div id=" + serverName + "Loading>");
            document.write(msg);
            document.write("</div>");
        }
    });
}
server_output("serverName");
</script>
<input type='SUBMIT' value='GO' name='btnGo' onSubmit=document.form1.submit(); />
<input type='HIDDEN' name='ACTION' value='GO' />

当我加载页面时,我可以看到服务器管理器标题,以及最后一个标签之后的按钮,但是它们几乎立即消失了。之后服务器信息加载并且它们不再出现,所以我没有我的标题以及让我使用表单的按钮(我的 php 脚本创建用于将作业提交到服务器以进行更新的复选框) . 有任何想法吗?

4

4 回答 4

1

对于 jQuery,它就像调用后端 PHP 脚本一样简单。

$.ajax({
    type : 'POST',
    url : 'your_script.php',
    async : true, //default anyway
    data : '', //server ip, or something to send to the script using type as the method
    success : function(msg){
        //do something here with returned data
        //Example: alert(msg) will show the output results from the backend script
    }
});
于 2011-07-25T15:13:03.463 回答
1

您正在使用 AJAX 进行 POST,但您正在检查 $_GET - 认为您可能需要 $_POST。

于 2011-07-25T20:21:25.437 回答
0

您可以使用jquery AJAX 函数从客户端进行所有调用。因此,您可以异步进行所有调用。

于 2011-07-25T15:13:30.373 回答
0

jQuery 和 AJAX 绝对是必经之路。jQuery AJAX 是异步的,因此您可以一次启动很多工作。您将为尝试获取更新的每台服务器启动 AJAX 作业。

默认情况下,您可以为每个服务器创建一个 div,其内容为“正在加载”。一旦您从 AJAX 调用中获得成功响应,您就可以将 div 的值更改为您想要显示的信息。即使失败也会从 AJAX 返回结果,因此您可以捕获错误并显示不同的消息。

于 2011-07-25T15:13:54.320 回答