Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2005
    Messaggi
    170

    creazione csv: problema con tanti record

    Salve, vi spiego subito il mio problema: devo creare un file formato csv dal risultato di una query.
    Tutto funziona a dovere: il problema si presenta quando il file contiene più di 40000 record circa, infatti restituisce una pagina bianca, senza errori.
    Non è problema di memoria perchè se io visualizzo i risultati a video il browser inizia a estrarre i dati senza problemi, anche se ci mette parecchio, visto che sono più di 40000 record, oppure mi dovrebbe restituire un errore tipo "Fatal error: Allowed memory size...".
    Non è un problema di sintassi della query perchè se io limito la query a tot risultati il file viene creato.
    Dov'è quindi il problema?
    E soprattutto, qual è la soluzione?

    Thanks

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2005
    Messaggi
    170
    Nessun suggerimento?!?

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2005
    Messaggi
    170
    Possibile che nessuno ha mai la necessità di creare csv!!?

  4. #4
    non è che superi i 30 secondi?

  5. #5
    @xmaxfane

    ci sono un botto di modi per evitare questo problema, partendo soprattutto dall'evitare di caricare TUTTO il file in memoria e di rimuovere/reinizializzare le variabili quando si finisco di usare se possono contenere troppa roba e cosi via

    usando fgetcsv acquisisci un array di elementi estratti dalla riga e, una volta fatto metti tutto dentro un array container

    quando raggiungi i 500 elementi, ad esempio, prendi e costruisci una query insert con le aggiunte multiple (ovvero l'elenco dei blocchi di values separati da una virgola, guarda il manuale di mysql a riguardo)

    una volta fatto svuoti l'array di base e ricominci a ciclare il tutto

    non è complicato

    facendo cosi non solo riduci notevolmente la memoria usata ma in compenso invece di lanciare 40000 query ne lanci 80

    utilizzando questa tecnica sono riuscito a ridurre il tempo di importazione di un db informix da 2 ore e mezza a poco meno di 15 minuti (ma li facevo pure parecchia altra roba)

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.