Pregunta

He codificado un script PHP que se utiliza para verificar el estado de varios servidores diferentes, determinar si están en línea y luego obtener la información de su versión y dar la opción de actualizar las bases de datos en el servidor.

El problema que tengo es que cuando el script llega a un servidor que está fuera de línea, se cuelga durante mucho tiempo mientras realiza el cheque. Pensé que una buena manera de esto puede ser usar algo como jQuery o xajax para cargar los diferentes servidores de forma asincrónica, de modo que un servidor no cuelgue todo el script.

Llamo a una sola función para comenzar todas las verificaciones y hacer eco de la información del servidor:

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

Mi pregunta es: ¿Cuál sería el mejor método para cargar estos servidores de forma asincrónica? Si pudiera hacer que diga "Cargando ..." en el lugar de cada servidor mientras realiza las comprobaciones, eso sería ideal. No he usado jQuery o xajax antes, así que pensé que era mejor obtener algo de entrada a la comunidad. ¡Gracias!

EDITAR: Ahora lo tengo funcionando y cargando todos mis servidores, pero tengo otro 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' />

Cuando carga la página, puedo ver el encabezado del administrador del servidor, así como el botón que viene después de la última etiqueta, sin embargo, desaparecen casi de inmediato. La información del servidor se carga después de eso y no reaparecen, por lo que me queda sin mi título, así como el botón que me permite usar mi formulario (mi script PHP crea casillas de verificación que se utilizan para enviar trabajos a los servidores para actualizar) . ¿Algunas ideas?

¿Fue útil?

Solución

Bueno, para jQuery es tan fácil como llamar a su script PHP de backend.

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

Otros consejos

Estás usando AJAX para publicar, pero estás verificando $ _get - cree que es posible que desee $ _post.

Puede hacer todas sus llamadas desde el lado del cliente con el función jQuery AJAX. Por lo tanto, puede hacer todas sus llamadas de forma asincrónica.

JQuery y Ajax es definitivamente el camino a seguir. JQuery Ajax es asíncrono, por lo que puedes comenzar muchos trabajos a la vez. Ircaría un trabajo de AJAX para cada servidor para el que está tratando de obtener actualizaciones.

Por defecto, puede tener un DIV para cada servidor con el contenido de "Carga". Una vez que obtenga una respuesta exitosa de la llamada AJAX, cambiaría el valor del DIV a la información que desea mostrar. Incluso una falla devolverá un resultado de AJAX, por lo que podría atrapar el error y mostrar un mensaje diferente.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top