Загрузка информации о сервере с нескольких серверов асинхронно

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

  •  26-10-2019
  •  | 
  •  

Вопрос

Я закодировал сценарий PHP, который используется для проверки состояния нескольких различных серверов, определить, являются ли они в сети, а затем вывод информации о своей версии, а также предоставление опции для обновления баз данных на сервере.

Проблема, которая у меня есть, заключается в том, что когда скрипт достигает сервера, который не везет, он очень долго видит, пока выполняет проверку. Я подумал, что хорошим способом обойти это может быть использование чего -то вроде jQuery или Xajax, чтобы загрузить различные серверы асинхронно, чтобы один сервер не вешал весь скрипт.

Я вызываю одну функцию, чтобы начать все проверки и повторить информацию о сервере:

    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 создает флажки, которые используются для отправки заданий на серверы для обновления) Анкет Любые идеи?

Это было полезно?

Решение

Ну для 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
    }
});

Другие советы

Вы используете Ajax для публикации, но вы проверяете $ _get - думаю, вы можете захотеть $ _post.

Вы можете сделать все свои звонки с клиентской стороны с jquery ajax функция. Анкет Таким образом, вы можете сделать все свои звонки асинхронно.

JQuery и Ajax определенно путь. JQuery Ajax асинхронно, так что вы можете запустить много рабочих мест за один раз. Вы бы начали работу AJAX для каждого сервера, для которого вы пытаетесь получить обновления.

По умолчанию вы можете иметь Div для каждого сервера с содержанием «загрузки». Как только вы получите успешный ответ от вызова AJAX, вы измените значение DIV на информацию, которую вы хотели бы отобразить. Даже сбой вернет результат от Ajax, так что вы можете поймать ошибку и отобразить другое сообщение.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top