Domanda

Ho codificato uno script php che viene utilizzato per verificare lo stato dei diversi server, determinare se sono in linea, e poi in uscita il loro informazioni sulla versione così come dare la possibilità di aggiornare i database sul server.

Il problema che sto avendo è che quando lo script raggiunge un server che non è in linea, si blocca per un tempo molto lungo, mentre si esegue il controllo. Ho pensato che un buon modo per aggirare questo potrebbe essere quello di utilizzare qualcosa come jQuery o xajax per caricare i diversi server in modo asincrono, in modo che un server non si blocca l'intero script.

che io chiamo una singola funzione per iniziare tutti i controlli, e facendo eco delle informazioni sul server:

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

La mia domanda è: quale sarebbe il metodo migliore per caricare questi server in modo asincrono? Se potessi farlo per dire "Loading ..." al posto di ciascun server mentre esegue i controlli, che sarebbe l'ideale. Non ho usato jQuery o xajax prima, così ho pensato che fosse meglio per ottenere alcuni input della comunità. Grazie!

EDIT:. Ora ho che funziona e il caricamento di tutti i miei server, ma ho un altro problema

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

Quando l'ho carica la pagina, posso vedere l'intestazione Server Manager, così come il pulsante che viene dopo l'ultima etichetta, però, scompaiono quasi immediatamente. I carichi di informazioni server dopo che e non lo fanno riapparire, così ho lasciato senza il mio titolo così come il pulsante che mi permette di utilizzare il mio modulo (il mio script php crea caselle di controllo che vengono utilizzati per inviare i lavori ai server per l'aggiornamento) . Tutte le idee?

È stato utile?

Soluzione

Bene per jQuery è facile come chiamare lo script di backend 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
    }
});

Altri suggerimenti

Si sta utilizzando AJAX per POST, ma si sta controllando $ _GET -. Pensa che si potrebbe desiderare $ _POST

Si potrebbe fare tutte le chiamate da lato client con la jQuery AJAX funzione . Così, è possibile effettuare tutte le chiamate in modo asincrono.

jQuery e AJAX è sicuramente la strada da percorrere. jQuery AJAX è asincrona, in modo da poter dare il via un sacco di posti di lavoro in una sola volta. Si potrebbe dare il via un lavoro AJAX per ogni server che si sta tentando di ottenere gli aggiornamenti per.

Per impostazione predefinita, si potrebbe avere un div per ogni server con il contenuto di "Loading". Una volta che si ottiene una risposta positiva dalla chiamata AJAX, è necessario modificare il valore del div alle informazioni che si desidera visualizzare. Anche un fallimento restituirà un risultato da AJAX, così si potrebbe intercettare l'errore e visualizzare un messaggio diverso.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top