Индикатор выполнения начальной загрузки в 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>
            ";

}
Author: Jack Bonneman, 2013-11-20

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 */});, и поместить все в рекурсивная функция
 3
Author: vonUbisch, 2015-11-24 22:50:43

Это действительно зависит от того, что вам конкретно нужно. Однако, как вы это описываете, это должно быть сделано с помощью ajax. Проблема в том, что ajax не допускает задержки ответов, поэтому вам придется выполнять вызовы ajax для каждой соответствующей задачи.

См. http://api.jquery.com/jQuery.ajax / и http://api.jquery.com/animate/

 2
Author: Fabian Schneider, 2013-11-20 13:48:25