informations sur le serveur de chargement à partir de plusieurs serveurs de manière asynchrone

StackOverflow https://stackoverflow.com/questions/6818147

  •  26-10-2019
  •  | 
  •  

Question

J'ai codé un script php qui est utilisé pour vérifier l'état de plusieurs serveurs différents, déterminer si elles sont en ligne, puis sortie leurs informations de version ainsi que de donner la possibilité aux bases de données de mise à jour sur le serveur.

Le problème que je vais avoir est que lorsque le script atteint un serveur qui est en ligne, il se bloque pendant un temps très long alors qu'il effectue le contrôle. Je me suis dit qu'une bonne façon de contourner cela peut être d'utiliser quelque chose comme jQuery ou xajax pour charger les différents serveurs de manière asynchrone, de sorte qu'un serveur ne se bloque pas le script entier.

J'appelle une seule fonction pour commencer toutes les vérifications, et en écho des informations sur le serveur:

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

Ma question est: quelle serait la meilleure méthode pour charger ces serveurs de manière asynchrone? Si je pouvais obtenir de dire « Loading ... » à la place de chaque serveur pendant qu'il effectue les contrôles, ce serait l'idéal. Je ne l'ai pas utilisé jQuery ou xajax avant, donc je pensais qu'il valait mieux obtenir des commentaires de la communauté. Merci!

EDIT:. J'ai maintenant fonctionner et charger tous mes serveurs, mais j'ai un autre problème

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

Lorsque la je charge la page, je peux voir l'en-tête Gestionnaire de serveur, ainsi que le bouton qui vient après la dernière balise, cependant, ils disparaissent presque immédiatement. Les charges d'information du serveur après et ils ne réapparaissent pas, donc je suis parti sans mon titre, ainsi que le bouton qui me permet d'utiliser ma forme (mon script php crée des cases à cocher qui sont utilisés pour soumettre des travaux aux serveurs de mise à jour) . Toutes les idées?

Était-ce utile?

La solution

Eh bien pour jQuery il est aussi facile que d'appeler votre script PHP back-end.

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

Autres conseils

Vous utilisez AJAX POST, mais vous vérifiez $ _GET -. Que vous voudrez peut-être $ _POST

Vous pouvez faire tous vos appels de côté client avec le jquery AJAX fonction . Ainsi, vous pouvez faire tous vos appels de manière asynchrone.

jQuery et AJAX est certainement le chemin à parcourir. jQuery AJAX est asynchrone, vous pouvez lancer beaucoup d'emplois à un moment donné. Vous lancer un travail d'AJAX pour chaque serveur que vous essayez d'obtenir des mises à jour pour.

Par défaut, vous pourriez avoir un div pour chaque serveur avec le contenu de « Chargement. » Une fois que vous obtenez une réponse positive de l'appel AJAX, vous modifiez la valeur de la div aux informations que vous souhaitez afficher. Même un échec retournera un résultat d'AJAX, vous pouvez donc intercepter l'erreur et afficher un message différent.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top