异步加载来自多个服务器的服务器信息

时间:2011-07-25 15:04:07

标签: php jquery ajax xajax

我编写了一个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 个答案:

答案 0 :(得分: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
    }
});

答案 1 :(得分:1)

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

答案 2 :(得分:0)

您可以使用jquery AJAX function从客户端拨打所有电话。因此,您可以异步拨打所有电话。

答案 3 :(得分:0)

jQuery和AJAX绝对是最佳选择。 jQuery AJAX是异步的,因此您可以同时启动大量工作。您将为您尝试获取更新的每台服务器启动AJAX作业。

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