[Javascript] Lavorare su file JSON molto grandi

Monital

Utente Attivo
15 Apr 2009
778
2
18
Sera a tutti e ben trovati,

avrei un piccolo problema con un file json di 20 MB che non riesco a leggere e quiindi lavorarci su con php per via del timeout.

Ho letto che si possono aprire con funzioni javascript o java ma su questi linguaggi sono proprio a zero,quialcuno può aiutarmi o indirizzarmi. l'ideale sarebbe leggerlo in php o trasferirlo nel db mysql.

In pratica io devo leggerlo e intabellare alcune poarti di questo in un file php.

Grazie dell'aiuto
 

marino51

Utente Attivo
28 Feb 2013
2.931
166
63
Lombardia
se sei sicuro che lo script che stai usando,
non ha "loop" che ne rendono infinita l'esecuzione
non esaurisce le risorse del server su cui viene eseguito,
puoi aumentare il tempo di esecuzione mettendo come prima riga dello script

ini_set('max_execution_time', 120); // 120 secondi = 2 minuti

incrementabili in caso di necessità
questo "setting" vale per il solo script che lo chiede,
non modifica i valori di php.ini
 

Monital

Utente Attivo
15 Apr 2009
778
2
18
ciao marino grazie della risposta, ma non funziona, -->Allowed memory size of 134217728 bytes exhausted (tried to allocate 32 bytes)<-- l'errore generato. ho dimenticato di dire che il json l'ottengo con la conversione da un file csv(non credo sia importante) però provando a convertirlo in xml da 20MB passa a 6MB ma anche tentando il parsing non riesce a finire il processo.

ho proprio le cartucce scariche non mi viene nessuna idea su come lavorare questo db, (tentavo la via del json penando fosse più leggero per evitare il caricamento sul database mysql dato che bisogna spezzettare il file csv ogni volta)
 

marino51

Utente Attivo
28 Feb 2013
2.931
166
63
Lombardia
lavorarci su con php per via del timeout.
timeout é legato al tempo di esecuzione,
viceversa l'errore indica l'esaurimento della memoria
in questo caso 3 possibilità,
la prima e più semplice, provare ad aumentare la qtà di memoria nello script aggiungendo come prima riga,

ini_set('memory_limit', '128M'); // 64, 128, 256, 512, 1024, 2018

se non dovesse funzionare deve essere modificato il parametro all'interno di php.ini

se non fosse possibile, meglio leggere il csv e mettere in tabella i valori che servono
 

Monital

Utente Attivo
15 Apr 2009
778
2
18
si ma, leggendo il csv con php non usa le stesse risorse di leggere un json o xml?
 

Monital

Utente Attivo
15 Apr 2009
778
2
18
ok quasi risolto con ini_set('memory_limit', '128M'); // 64, 128, 256, 512, 1024, 2018
ce la faccio anche se è sorto un altro problema ma fa parte del php

grazie marino