|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: May 2007
Città: DiSaronno Originale
Messaggi: 2376
|
[PHP+MYSQL] Importazione dati da file excel
Buongiorno a tutti.
Premetto che la mia è più una domanda di tipo "sistemista" che di programmazione in sè. Presso un cliente abbiamo realizzato un gestionale in php. Il cliente ha richiesto l'importazione di vari file excel (sono dei listini dei fornitori) per poter utilizzare i dati del listino all'interno del gestionale stesso. Questi fogli excel possono essere anche molto grossi, di diversi MB di dimensione per un totale a volte di più di 20000 righe. Abbiamo usato InnoDB come engine Mysql, in modo da poter realizzare le transazioni e controllare il flusso delle operazioni. In realtà l'applicazione è già esistente e funzionante, per farlo abbiamo utilizzato la classe esterna PHPExcel e tutto è stato eseguito correttamente. Lo script può durare anche tra i 10 e i 15 minuti di esecuzione. Il grosso problema è stato che dopo l'importazione il processo mysqld è impazzito e mi è andato in out of memory. Vorrei evitare che succeda ciò, in quel caso per risolvere ho riavviato il server, ma vorrei trovare un soluzione da php senza riavviare il server. Preciso che l'intera operazione è stata inserita in un'unica transazione e penso che sia quello il problema, cioè troppi dati salvati dal processo che mi è di fatto esploso. Preciso infine che all'interno del ciclo vengono eseguite almeno 2 query per volte (quindi ad esempio su 20000 righe vengono eseguite almeno 40000 query) Una soluzione quale potrebbe essere? Ho cercato in rete ma ho trovato poche risposte. Tendenzialmente non mi va di esportare il file in csv e reimportarlo...
__________________
Dell XPS 9570 Powered by Arch Linux || Motorola One Vision Ho concluso con raffaelev, Iceworld, stebru, Dichy, AXIP, Quakeman e Swampo |
![]() |
![]() |
![]() |
#2 |
Junior Member
Iscritto dal: Oct 2006
Messaggi: 8
|
hai verificato la memoria assegnata al php nel php.ini?
__________________
Per la visibilità web della tua azienda visita modalsource Trova il corso adatto a te su topcorsi.it |
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: May 2007
Città: DiSaronno Originale
Messaggi: 2376
|
Ciao, grazie per la risposta.
Su un file di config che viene importato ci abbiamo piazzato un ini_set("memory_limit","512M"); Ho paura ad aumentare quel valore. L'applicativo php gira su una VM a cui è stata assegnata 1 GB di RAM. Dopo questo episodio ho portato la RAM a 2 GB, ma non sono sicuro che sia sufficiente
__________________
Dell XPS 9570 Powered by Arch Linux || Motorola One Vision Ho concluso con raffaelev, Iceworld, stebru, Dichy, AXIP, Quakeman e Swampo |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 23:16.