我编写了一个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脚本创建用于向服务器提交作业以进行更新的复选框) 。有什么想法吗?
答案 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返回结果,因此您可以捕获错误并显示不同的消息。