Frage

Ich habe ein PHP -Skript codiert, mit dem der Status mehrerer Server überprüft, festgestellt wird, ob sie online sind, und dann ihre Versionsinformationen ausgeben und die Option zum Aktualisieren von Datenbanken auf dem Server geben.

Das Problem, das ich habe, ist, dass das Skript, wenn es einen Server erreicht, der offline ist, sehr lange hängt, während es den Scheck ausführt. Ich dachte, dass ein guter Weg um diese möglicherweise so etwas wie JQuery oder Xajax verwenden kann, um die verschiedenen Server asynchron zu laden, sodass ein Server das gesamte Skript nicht hängt.

Ich rufe eine einzelne Funktion auf, um alle Überprüfungen zu beginnen und die Serverinformationen zu wiederholen:

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

Meine Frage ist: Was wäre die beste Methode, um diese Server asynchron zu laden? Wenn ich es an der Stelle eines jeden Servers sagen könnte, während es die Überprüfungen durchführt, wäre das ideal. Ich habe JQuery oder Xajax noch nicht verwendet, also fand ich es am besten, die Community einzugeben. Vielen Dank!

EDIT: Ich habe es jetzt zum Laufen gebracht und alle meine Server geladen, aber ich habe ein anderes Problem.

<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' />

Wenn ich die Seite lade, kann ich den Server -Manager -Header sowie die nach dem letzten Tag erscheinende Schaltfläche sehen. Sie verschwinden jedoch fast sofort. Die Serverinformationen laden danach und sie tauchen nicht wieder auf. Ich bin also ohne meinen Titel sowie die Schaltfläche, mit der ich mein Formular verwenden kann (mein PHP -Skript erstellt Kontrollkästchen, mit denen Jobs zur Aktualisierung an die Server übermittelt werden). . Irgendwelche Ideen?

War es hilfreich?

Lösung

Nun, für JQuery ist es so einfach wie das Aufrufen Ihres Backend -PHP -Skripts.

$.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
    }
});

Andere Tipps

Sie verwenden AJAX, um zu veröffentlichen, aber Sie überprüfen $ _get - denken Sie, Sie möchten möglicherweise $ _post.

Sie können alle Ihre Anrufe von der kundenseitigen Seite mit dem tätigen JQuery Ajax -Funktion. So können Sie alle Ihre Anrufe asynchron tätigen.

JQuery und Ajax sind definitiv der richtige Weg. JQuery Ajax ist asynchron, sodass Sie auf einmal viele Jobs beginnen können. Sie würden einen AJAX -Job für jeden Server starten, für den Sie versuchen, Updates zu erhalten.

Standardmäßig können Sie einen DIV für jeden Server mit dem Inhalt von "Laden" haben. Sobald Sie eine erfolgreiche Antwort vom AJAX -Anruf erhalten haben, würden Sie den Wert der Div in die Informationen ändern, die Sie anzeigen möchten. Sogar ein Fehler gibt ein Ergebnis von AJAX zurück, sodass Sie den Fehler fangen und eine andere Nachricht anzeigen können.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top