Ti ho inserito un po' di commenti in più nel codice così dovrebbe essere più chiaro. Se hai altri dubbi chiedi pure:

Codice PHP:
        // Istanzia la progressbar
        
$( "#progressbar" ).progressbar({
            
value0,
            
complete: function(eventui) {
                                
// Ciò che deve visualizzare una volta completata la progress bar
                
$('#main_content').html('Completato');
            }
        });
        
                
// Visualizza nel contenitore al di sotto della progressbar un testo (questo lo puoi anche omettere)
        
$('#main_content').html('Calcolo dei record dai inserire...');
        
        
// Variabili - questa la setti al di fuori delle funzioni per averla disponibile a livello globale
        
global_valori '';

        
// Recupera i dati: faccio la prima chiamata alla pagina lato server che mi restituisce i record da modificare. Io ad esempio restituisco in JSON l'id univoco
        
$.ajax({
            
asyncfalse,
            
type"POST",
            
url"pagina_lato_server_con_query.php",
            
data"action=total",
            
dataType"json",
            
success: function(valori){
                
global_valori valori;
            },
            
error: function(){
                
alert("Chiamata fallita, si prega di riprovare...");
            },
            
complete: function(){
            },
        });
        
        
// Totale: calcolo la lunghezza del record restituito per poi troverò l'unita da aumentare per ogni step della progress bar
        
var totale global_valori.valori.length;
        
        
// Unità per la progress bar
        
var bar 0;
        var 
unita 100 totale;
        
                
// Anche questa la puoi omettere, serve solo per visualizzare il testo sotto la progress bar
        
$('#main_content').html('Inserimento di '+totale+' records in corso...');
        
        
// Ciclo: per ogni valore cicla, ovvero fa un'ulteriore chiamata, sempre in ajax, al server
        
$.each(global_valori.valori, function() {
        
                       
// Dato che uso la stessa funzione per diverse tabelle qui ho fatto degli if per cambiare i tipi di azione da eseguire nella pagina remota in base al pulsante premuto; qui ti riporto invece solo il caso di una singola tabella così ti è piè semplice capire il meccanismo


            // Campi da passare: passo l'azione (sei hai più azioni come spiegato sopra, altrimenti è sufficiente passare l'id_univoco)
            
var campi 'action=uno&id='+this.id;

            
// Inserimento
            
$.ajax({
                
asynctrue,
                
type"POST",
                
url"pagina_lato_server.php",
                
datacampi,
                
dataType"html",
                
success: function(msg){
                                        
// Aumenta la progressbar; ho aggiunto un controllo al 99 perchè se l'unità non è intera sforava, allora per sicurezza lo blocco a 100
                    
bar += unita;
                    if(
bar 99bar 100;
                    
barint parseInt(bar);
                    $( 
"#progressbar" ).progressbar"option""value"barint);
                },
                
error: function(){
                    
alert("Chiamata fallita, si prega di riprovare...");
                },
                
complete: function(){
                },
            });
        });
    });