0

いくつかの異なるサーバーのステータスをチェックし、それらがオンラインかどうかを判断し、バージョン情報を出力し、サーバー上のデータベースを更新するオプションを提供するために使用される php スクリプトをコーディングしました。

私が抱えている問題は、スクリプトがオフラインのサーバーに到達すると、チェックの実行中に非常に長い時間ハングすることです。これを回避する良い方法は、jQuery や XAJAX などを使用してさまざまなサーバーを非同期にロードし、1 つのサーバーがスクリプト全体をハングさせないようにすることだと考えました。

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 スクリプトは、更新のためにサーバーにジョブを送信するために使用されるチェックボックスを作成します)。 . 何か案は?

4

4 に答える 4

1

POST に AJAX を使用していますが、$_GET をチェックしています - $_POST が必要かもしれないと考えてください。

于 2011-07-25T20:21:25.437 に答える
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 に答える
0

jquery AJAX functionを使用して、クライアント側からすべての呼び出しを行うことができます。したがって、すべての呼び出しを非同期で行うことができます。

于 2011-07-25T15:13:30.373 に答える
0

jQuery と AJAX は間違いなく進むべき道です。jQuery AJAX は非同期であるため、一度に多くのジョブを開始できます。更新を取得しようとしているサーバーごとに AJAX ジョブを開始します。

デフォルトでは、サーバーごとに「読み込み中」のコンテンツを持つ div を作成できます。AJAX 呼び出しから正常な応答を取得したら、div の値を表示したい情報に変更します。失敗しても AJAX から結果が返されるため、エラーをトラップして別のメッセージを表示できます。

于 2011-07-25T15:13:54.320 に答える