Der beste Weg, um große Dateien in PHP zu lesen?
-
06-07-2019 - |
Frage
Ich habe CSV-Dateien Zeile für Zeile weicht lesen kann 10 bis 20 Meg sein. Datei () ist nutzlos ;-) und ich muß den quickiest Weg finden.
Ich habe versucht mit fgets (), Wich gut laufen, aber ich weiß nicht, ob es ein kleiner Block jedes Mal las ich es nennen, oder wenn es eine größere Cache und optimieren Datei-I / O. Muss ich die fread () Art und Weise versuchen, EOL von mir Parsen?
Danke Cedric
Lösung
Sie sollten verwenden fgetcsv () wenn möglich.
Ansonsten gibt immer fgets ().
Andere Tipps
stream_get_line ist offenbar effizienter als fgets für große Dateien. Wenn Sie eine sinnvolle maximale Länge für die Lese angeben ich keinen Grund, warum PHP haben würde zu ‚Read-Ahead‘ eine Linie in lesen, wie Sie scheinen sich Gedanken zu werden.
Wenn Sie CSVs verwenden dann fgetcsv Ergebnisse zurück in einem etwas empfindlicheren Format.
Sie sollten einen Blick auf fgetcsv()
haben, analysiert er automatisch das Koma getrennt Zeile in ein Array.
Wie für die Laufzeiteffizienz, ich habe keine Ahnung. Sie haben einen schnellen Test ausgeführt, vorzugsweise mit einer Datei von der Größe, die Sie später behandeln erwarten. Aber ich würde, wenn der fget überrascht sein ??? und FPUT ??? Funktionen waren nicht I / O optimiert.