Das Zählen von Zeilen in großen Textdateien mit file($path) kann zu Speicherauslastungsfehlern führen Die gesamte Datei wird in den Speicher geladen. Um dieses Problem anzugehen, ist ein effizienterer und speichersparenderer Ansatz erforderlich.
Eine Methode zum effizienten Zählen von Zeilen ist die Verwendung der Funktion fgets(). Indem Sie Zeilen einzeln lesen und verarbeiten, können Sie vermeiden, die gesamte Datei in den Speicher zu laden:
<code class="php">$file = "largefile.txt"; $linecount = 0; $handle = fopen($file, "r"); while (!feof($handle)) { $line = fgets($handle); $linecount++; } fclose($handle); echo $linecount;</code>
Dieser Code öffnet die Datei zum Lesen, liest jeweils eine einzelne Zeile mit fgets() und erhöht sie die Zeilenanzahl und wird beendet, wenn das Ende der Datei erreicht ist.
Ein weiterer Ansatz, der besonders nützlich für Dateien mit möglicherweise sehr langen Zeilen ist, ist das Zählen von Zeilenendezeichen:
<code class="php">$file = "largefile.txt"; $linecount = 0; $handle = fopen($file, "r"); while (!feof($handle)) { $line = fgets($handle, 4096); $linecount += substr_count($line, PHP_EOL); } fclose($handle); echo $linecount;</code>
Hier wird substr_count() verwendet, um die Anzahl der Zeilenumbrüche in jedem gelesenen Datenblock zu zählen.
Beide Methoden verbrauchen weniger Speicher, da sie Zeilen inkrementell verarbeiten, anstatt die gesamte Datei in den Speicher zu laden.
Das obige ist der detaillierte Inhalt vonWie kann man Zeilen in großen Textdateien (200 MB) effizient zählen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!