Il modo migliore per leggere file di grandi dimensioni in PHP?
-
06-07-2019 - |
Domanda
Devo leggere i file CSV riga per riga che possono essere da 10 a 20 Meg. file () è inutile ;-) e devo trovare il modo più veloce.
Ho provato con fgets (), che funziona bene, ma non so se legge un piccolo blocco ogni volta che lo chiamo, o se ne memorizza uno più grande e ottimizza l'I / O dei file. Devo provare il modo fread (), analizzando EOL da solo?
Grazie Cedric
Soluzione
Dovresti utilizzare fgetcsv () se possibile.
Altrimenti, c'è sempre fgets ().
Altri suggerimenti
stream_get_line è apparentemente più efficiente dei budget per file di grandi dimensioni. Se specifichi una lunghezza massima ragionevole per la lettura, non vedo alcun motivo per cui PHP dovrebbe "leggere in anticipo" per leggere una riga, poiché sembri preoccupante.
Se si desidera utilizzare CSV, fgetcsv restituirà i risultati in un formato leggermente più sensato.
Dovresti dare un'occhiata a fgetcsv ()
, analizza automaticamente la linea separata da coma in un array.
Per quanto riguarda l'efficienza di runtime, non ne ho idea. Dovrai eseguire un test rapido, preferibilmente con un file delle dimensioni che ti aspetti di gestire in seguito. Ma sarei sorpreso se il problema ??? e fput ??? le funzioni non erano ottimizzate per l'I / O.