Resposta Ajax antes de iniciar importação de arquivo Excel (PHP - MySql)
O problema está na demora da resposta Ajax, quando o arquivo Excel possui muitas linhas para serem inseridas no banco de dados MySql. Pois desta forma minha aplicação fica travada, aguardando a resposta desta requisição.
Então gostaria de alguma sugestão para obter a resposta do upload, e em segundo plano a importação fosse realizada, sem interferir no funcionamento da aplicação.
Até então, estou utilizando o POST e no servidor PHP, estou utilizando o seguinte código:
$tmp = $_FILES['file']['tmp_name'];
$name = $_FILES['myfile']['name'];
$path = "upload/";
if (move_uploaded_file($tmp, $path . $name))
{
//aqui eu chamo funcão para importar o arquivo
}
ou em codeigniter
$file = $_FILES['file'];
$config = [
'upload_path' => FCPATH.'upload/',
'allowed_types' => 'xlsx|xls|csv'
];
$this->load->library('upload', $config);
if ($this->upload->do_upload('file')){
$data = $this->upload->data();
@chmod($data['full_path'], 0777);
//aqui eu chamo funcão para importar o arquivo
}
**Ajax**
ajaxCall = $.ajax({
//async: true,
url: 'api_upload/upload',
data: formData,
cache: false,
processData: false,
contentType: false,
type: 'POST',
headers: {
'authorization': 'Basic YWRtaW46MTIzNA==',
'Authorizationkeyfortoken': String(responseToken),
'cache-control': 'no-cache',
'postman-token': '51901e9b-3613-248b-621e-ffd06d92ded4'
},
// this part is progress bar
xhr: function () {
let xhr = new window.XMLHttpRequest();
xhr.upload.addEventListener('progress', function (evt) {
if (evt.lengthComputable) {
let percentComplete = evt.loaded / evt.total;
percentComplete = parseInt(percentComplete * 100);
$('.my-progress').text(percentComplete + '%');
$('.my-progress').css('width', percentComplete + '%');
}
}, false);
xhr.addEventListener('load', function (evt) {
if (evt.lengthComputable) {
//completeSave();
}
}, false);
xhr.addEventListener('abort', function (evt) {
if (evt.lengthComputable) {
//completeSave();
}
}, false);
return xhr;
},
//beforeSend: function() {
//completeSave();
//},
success: function (data) {
//completeSave();
$('.msg').text(data);
//$('#import-save').removeAttr('disabled');
}
});Discussão (0)
Carregando comentários...