C'è un commento che dice "//And file to check with ajax"... in pratica lo script php esegue tutto l'upload e ALLA FINE stampa l'ultima riga (quindi tu vedi sempre "0%" o il contenuto del file di progresso).... devi usare UN ALTRO script (che visualizzerà l'utente) che legge il contenuto del file di progresso (aggiornato in tempo reale DURANTE l'esecuzione del primo script) a intervalli regolari e mostra il progresso in corso.