Вы загрузили все свои данные за один раз, затем сервер обработает ваши данные, по завершении возвращает результат.Вы на самом деле хотите, чтобы длительный статус процесса каждой отдельной строки данных процесса.Для этого вам на самом деле нужен отдельный php-файл и вызов ajax.Ваш оригинальный php-файл должен обновлять статус в сеансе или дБ, как показано ниже,
session_start();
$_SESSION['status'] = $status;
session_write_close();
Обратите внимание, что этот фрагмент кода должен находиться внутри цикла обработки данных.Вы должны запустить () и закрыть () этот конкретный сеанс, потому что этот сеанс не может быть открыт в другом процессе, так как нам нужно получить доступ к этому сеансу из 2-го файла php, который выглядит следующим образом:
ob_start();
session_start();
session_write_close();
$output = array();
$output['status'] = $_SESSION['status'];
echo json_encode($output);
Теперь сервербоковой код в порядке, вам нужно запросить 2-й php с регулярным интервалом, чтобы получить статус обработки,
var timeout = setInterval('showUpdate()', 1000);
function showUpdate(){
$.get( "2ndPhp.php", function( data ) {
var returnData = data.status;
if (returnData.length>0){
// This is server returned update data, you can show this or convert it to
//progressbar
}
}, "json");
}
Когда основной процесс завершится, вы можете закрыть этот цикл, закрыв этот интервал.
.complete(function(data){
clearInterval(timeout);
$('#uploadVariantsBtn').attr('disabled', false);
$('.error-message').html('<div class="alert alert-success" role="alert">Product
Variants has been updated!</div><br />');
// $('.show-results').html('<h3>Product Variants have been updated!</h3>');
}).fail(function(jqXHR, textStatus){
console.log('Request failed: ' + textStatus);
});