Maison  >  Article  >  développement back-end  >  Comment compter efficacement les lignes dans des fichiers texte volumineux (200 Mo) ?

Comment compter efficacement les lignes dans des fichiers texte volumineux (200 Mo) ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-02 07:38:02387parcourir

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

Compter les lignes dans des fichiers texte volumineux (200 Mo) sans erreurs de mémoire

Le comptage des lignes dans des fichiers texte volumineux à l'aide de file($path) peut entraîner des erreurs d'épuisement de la mémoire, car le fichier entier est chargé en mémoire. Pour résoudre ce problème, une approche plus efficace et économisant la mémoire est nécessaire.

Une méthode pour compter efficacement les lignes consiste à utiliser la fonction fgets(). En lisant et en traitant les lignes une par une, vous pouvez éviter de charger l'intégralité du fichier en mémoire :

<code class="php">$file = "largefile.txt";
$linecount = 0;
$handle = fopen($file, "r");

while (!feof($handle)) {
  $line = fgets($handle);
  $linecount++;
}

fclose($handle);

echo $linecount;</code>

Ce code ouvre le fichier en lecture, lit une seule ligne à la fois en utilisant fgets(), incrémente le nombre de lignes, et se termine lorsque la fin du fichier est atteinte.

Une autre approche, particulièrement utile pour les fichiers comportant des lignes potentiellement très longues, consiste à compter les caractères de fin de ligne :

<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>

Ici, substr_count() est utilisé pour compter le nombre de sauts de ligne dans chaque bloc de données lu.

Ces deux méthodes utilisent moins de mémoire car elles traitent les lignes de manière incrémentielle plutôt que de charger l'intégralité du fichier en mémoire.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn