Я пытаюсь создать индикатор выполнения для серверной задачи, написанной на php и python, который показывает загрузку и ход обработки загруженного файла.
Моя проблема в том, что индикатор выполнения достигает 100%, когда файл перемещается в папки, и остается на этом значении, пока сценарий python не завершит обработку. Но я бы хотел, чтобы процентное соотношение следовало за обработкой в сценарии python и достигало 100% только по завершении.
Собственно это мой js код
$.ajax({
url: 'server.php',
dataType: 'text',
cache: false,
contentType: false,
processData: false,
data: fd,
type: 'post',
xhr: function() {
let xhr = new window.XMLHttpRequest();
xhr.upload.addEventListener("progress", function(evt) {
if (evt.lengthComputable) {
let percentComplete = ((evt.loaded / evt.total) * 100);
percentComplete = Math.round(percentComplete);
$(".progress-bar").width(percentComplete + '%');
$(".progress-bar").html(percentComplete + '%');
}
}, false);
return xhr;
},
beforeSend:function(){
$('.upload-alert').show();
},
success: function (php_script_response) {
setSliders(usr);
console.log(php_script_response);
}
});
А это php код
if (isset($_FILES['file']) && $_POST['user']!='')
{
if ( 0 < $_FILES['file']['error'] ) {
echo 'Error: ' . $_FILES['file']['error'] . '<br>';
}
else {
$errors = [];
$file_name = reset(explode('.', $_FILES['file']['name']));
$file_ext = end(explode('.', $_FILES['file']['name']));
$valid_ext = array('zip', 'mbox');
if (!in_array($file_ext, $valid_ext))
$errors[] = 'File not allowed';
else{
if (empty($errors)) {
$path = 'uploads/'.$_POST['user'].'/'.$file_name;
mkdir($path, 0777, true);
move_uploaded_file($_FILES['file']['tmp_name'], $path.'/'.$_FILES['file']['name']);
}
if ($file_ext == 'zip'){
$output = shell_exec('python /Users/leonardo/Sites/sna/server/dumper/fbDumpUploader.py '.$path.' '.$_POST['user'].' 2>&1');
echo $output;
}
rrmdir($path);
}
}
}
Есть способ решить эту проблему? Большое спасибо