Salve a tutti.
Sto lavorando su un processo di aggiornamento di un'anagrafica articoli.
I dati degli articoli sono memorizzati in un database mysql e l'utente deve avere la possibilità di aggiornare questi dati caricando sul server dei file di aggiornamento (si tratta di file di testo con un formato predefinito).
Sono riuscito ad ottenere un processo già funzionante ma ciò che mi lascia perplesso sono i tempi: 11secondi per aggiornare 100 record quando in totale occorre analizzarne 65.000, fatti due conti il sistema impiega circa due ore per analizzare il tutto.
Sicuramente c'è un modo più efficente di procedere, ecco perchè chiedo la vostra opinione.
Il processo di aggiornamento, attualmente funziona così:
c'è un file index.php che richiama via ajax un file updater.php il quale gli risponde e gli passa i dati necessari a tracciare il progresso dell'operazione.
il file updater.php è quello che analizza il file e procede in questo modo:
-apre il file
-ottiene le righe con explode("\n")
-in un ciclo for vengono analizzate le righe ottenute con explode ma non tutte, solo 100 alla volta
-nel ciclo ogni riga viene spezzata in base al separatore : explode("-")
-a questo punto faccio le query di aggiornamento
-finito di analizzare le 100 righe, il file stampa la stringa con le informazioni sullo stato del processo
finchè ci sono record da elaborare update.php continua a tornare una stringa, pertanto quando smette di farlo la sequenza di chiamate ajax cessa.
Il problema risiede nel fatto che devo ogni volta aprire un file del peso di 3MB e 65.000
Ho anche provato a memorizzare i file nel database alla prima chiamata e leggere i dati dagli stessi per non aprire ogni volta il file ma i tempi sono rimasti pressochè invariati.
Che altro potrei fare?
Grazie