Загрузка серверной информации с нескольких серверов асинхронно - PullRequest
0 голосов
/ 25 июля 2011

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

Ответы [ 4 ]

1 голос
/ 26 июля 2011

Вы используете AJAX для POST, но вы проверяете $ _GET - возможно, вам понадобится $ _POST.

1 голос
/ 25 июля 2011

Что ж, для 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
    }
});
0 голосов
/ 25 июля 2011

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

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

0 голосов
/ 25 июля 2011

Вы можете делать все свои звонки со стороны клиента с помощью функции jquery AJAX .Таким образом, вы можете делать все ваши звонки асинхронно.

...