Ragazzi finalmente ho risolto, posto il codice così potra essere di aiuto a qualche altro malcapitato come me :-)
Lato server ho due script che eseguono due operazioni separate, il primo provvede alla vera e propria creazione del file e ne carica lo stato sul DB, il secondo interroga il db e mi restituisce lo stato attuale delle operazioni.
Lato client ho bootstrap in html che si occupa di far vedere la mia barra di caricamento e in js ho il seguente codice
codice:
function control_loading_state() {
var strUrl =($("#url").val())+"read_loading_state" , obj = "";
jQuery.ajax({
url: strUrl,
success: function(html) {
obj = html;
},
//questa stringa mi permette di esportare i dati in modo sincrono
async:false
});
if(obj =='"empty"'){
return false;
}else{
return obj;
}
}
$('#crea_file').click(function(){
//Avvio la creazione del file
open_page();
//dichiaro le variabili
var result,current,totale,percent;
//controllo che la pagina mi restituistca la stringa con i dati che a me servono
do{
result = control_loading_state();
}while(!result)
do{
//rileggo i dati fino a quando non mi restituisce false
result = jQuery.parseJSON(control_loading_state());
totale = result.totale;
current = result.current;
percent = (current/totale)*100;
$('#status_bar').css("visibility","visible");
$('#progress_bar').css("width",parseInt(percent)+"%");
$('#progress_bar').text(parseInt(percent)+"%");
}while(result != false)
$('#progress_bar').css("width",100+"%");
$('#progress_bar').text(100+"%");
$('#status_bar').css("visibility","hidden")
$('#progress_bar').css("width",0+"%");
$('#progress_bar').text("0%");
});
//avvio la creazione del file
//
function open_page(){
var url=($("#url").val())+"create_file";
$.get( url, function( data ) {
});
}
a voi le conclusioni :-D