複数のサーバーからのサーバー情報を非同期にロードします
質問
いくつかの異なるサーバーのステータスを確認し、それらがオンラインであるかどうかを判断するために使用されるPHPスクリプトをコーディングし、バージョン情報を出力し、サーバー上のデータベースを更新するオプションを提供しました。
私が抱えている問題は、スクリプトがオフラインのサーバーに到達すると、チェックを実行する間、非常に長い間ハングすることです。これを回避する良い方法は、JqueryやXajaxのようなものを使用して異なるサーバーを非同期にロードして、1つのサーバーがスクリプト全体を掛けないようにすることであると考えました。
すべてのチェックを開始するために単一の関数を呼び出し、サーバー情報のエコーを開始します。
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スクリプトは、更新のためにサーバーにジョブを送信するために使用されるチェックボックスを作成します) 。何か案は?
解決
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
}
});
他のヒント
Ajaxを使用して投稿していますが、$ _GETをチェックしています - $ _POSTが必要だと思います。
クライアント側からすべての電話をかけることができます jQuery ajax関数. 。したがって、すべての呼び出しを非同期に行うことができます。
JQueryとAjaxは間違いなく行く方法です。 jquery ajaxは非同期であるため、一度に多くの仕事を始めることができます。更新を取得しようとしている各サーバーのAJAXジョブを開始します。
デフォルトでは、「ロード」のコンテンツを備えた各サーバーにDIVを使用できます。 Ajaxコールから成功した応答を取得したら、Divの値を表示したい情報に変更します。障害でさえAJAXの結果を返すため、エラーをトラップして別のメッセージを表示できます。