Avatar ·

Wie man eine große Datei zeilenweise in PHP effizient liest, ohne den Speicher zu überlasten?

Hallo zusammen! Ich bin ein PHP-Anfänger und habe ein Problem bei der Verarbeitung großer Dateien. Ich habe eine CSV-Datei mit etwa 200 MB, die ich zeilenweise verarbeiten muss. Zuerst habe ich versucht, file_get_contents() und explode() mit dem Zeilenumbruch zu verwenden, aber das Skript stürzt mit dem Fehler "Allowed memory size exhausted" ab. Hier ist mein Code:\n\n```php\n$data = file_get_contents('big_file.csv');\n$lines = explode("\n", $data);\nforeach ($lines as $line) {\n // Zeile verarbeiten\n echo $line . "\n";\n}\n```\n\nIch verstehe, dass file_get_contents() die gesamte Datei in den Speicher lädt, was das Problem verursacht. Aber wie liest man eine Datei dann richtig zeilenweise? Ich habe von fopen() und fgets() gehört, bin mir aber nicht sicher, wie man sie für große Dateien richtig einsetzt. Mich interessiert auch, wie man Dateien größer als 1 GB verarbeitet – gibt es dabei Fallstricke? Und kann man das Lesen irgendwie optimieren, um unnötigen Speicher zu sparen? Vielen Dank im Voraus für die Hilfe!\n<<>>\n

Verwendung von fopen() und fg