Индикатор выполнения начальной загрузки в php
У меня есть веб-страница с некоторыми html и php. php предназначен для выполнения некоторых команд linux. Я хочу поместить индикатор выполнения начальной загрузки на свою веб-страницу, который будет отображаться при выполнении следующей команды Linux.
Допустим, я выполняю 4 команды Linux, каждый раз, когда команда завершает выполнение, индикатор выполнения должен увеличиваться на 25%.
Я искал в Интернете, но не смог найти ничего, что мне нужно. Есть какие-нибудь предложения?
Получил только php/html часть до сих пор:
function progressbarStatus($width) {
echo "
<div class = 'container'>
<div class = 'progress progress-striped active'>
<div class = 'progress-bar' role = 'progressbar' aria-valuenow = '$width' aria-valuemin = '0' aria-valuemax = '100'style = 'width: $width%'></div>
</div>
</div>
</div>
";
}
2 answers
Способ сделать это и продемонстрирован здесь в очень простом формате с помощью jQuery;
Вы отправите запрос AJAX на свою страницу PHP, на которой есть команда, страница PHP вернет json_encode(array('success'=>true));
, и когда она будет получена и принята, панель прогресса обновится, и следующая функция начнет загружаться.
Я не проверял это, и это очень грубо, но это показывает вам (простым способом) технику, которую вы могли бы использовать.
$.getJSON('linkToLinuxCommand1.php').done(function(data) {
if (data.success === true) {
$('.progress').css('width', '25%');
$.getJSON('linkToLinuxCommand2.php').done(function(data) {
if (data.success === true) {
$('.progress').css('width', '50%');
$.getJSON('linkToLinuxCommand3.php').done(function(data) {
if (data.success === true) {
$('.progress').css('width', '75%');
$.getJSON('linkToLinuxCommand4.php').done(function(data) {
if (data.success === true) {
$('.progress').css('width', '100%');
alert('Done!');
}
});
}
});
}
});
}
});
Некоторые замечания;
- До тех пор, пока команды Linux не отвечают на PHP, вы можете получить только статус
done
страницы PHP - Возможно, вам нужно добавить дополнительные параметры в запрос
getJSON
- Я не уверен, возвращает ли JSON логическое значение
true
илиfalse
, поэтому, возможно, вам нужно проверить как строку;data.success === "true"
- Продолжайте проверять, что возвращает
data
(после настройки страницы PHP для возврата JSON), используяconsole.log(data)
- Возможно, вам захочется привязать эти функции к триггеру, например
$('#button').click(function() {/* PLACE HERE */});
, и поместить все в рекурсивная функция
Это действительно зависит от того, что вам конкретно нужно. Однако, как вы это описываете, это должно быть сделано с помощью ajax. Проблема в том, что ajax не допускает задержки ответов, поэтому вам придется выполнять вызовы ajax для каждой соответствующей задачи.
См. http://api.jquery.com/jQuery.ajax / и http://api.jquery.com/animate/