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

War es hilfreich?

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.

fgets() sollten für Ihre Bedürfnisse völlig in Ordnung. Auch file() sollte in Ordnung sein - 20mb ist nicht sehr groß, wenn Sie dies viele Male tun gleichzeitig.

Haben Sie nicht vergessen können tune fgets() mit seinem zweiten Parameter.

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top