Heim  >  Artikel  >  Backend-Entwicklung  >  Wie kann man Zeilen in großen Textdateien (200 MB) effizient zählen?

Wie kann man Zeilen in großen Textdateien (200 MB) effizient zählen?

Susan Sarandon
Susan SarandonOriginal
2024-11-02 07:38:02323Durchsuche

How to Efficiently Count Lines in Large Text Files (200 MB )?

Zeilen in großen Textdateien (200 MB) ohne Speicherfehler zählen

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn