Maison >développement back-end >tutoriel php >Comment compter efficacement les lignes dans des fichiers texte volumineux en PHP ?

Comment compter efficacement les lignes dans des fichiers texte volumineux en PHP ?

Linda Hamilton
Linda Hamiltonoriginal
2024-10-31 21:30:02439parcourir

How to Efficiently Count Lines in Large Text Files in PHP?

Un moyen efficace de compter les lignes dans des fichiers texte volumineux

Compter les lignes dans des fichiers texte volumineux (plus de 200 Mo) peut poser des problèmes de mémoire en PHP . La méthode traditionnelle consistant à charger l'intégralité du fichier en mémoire et à utiliser file() peut entraîner des erreurs fatales dues à l'épuisement de la mémoire.

Pour résoudre ce problème, une approche plus efficace consiste à utiliser fgets() ou fgetc(). Ces fonctions lisent respectivement le fichier ligne par ligne ou caractère par caractère, sans charger l'intégralité du fichier en mémoire. Voici un exemple utilisant fgets() :

<code class="php">$file = "largefile.txt";
$linecount = 0;
$handle = fopen($file, "r");
while(!feof($handle)){
  $line = fgets($handle);
  $linecount++;
}
fclose($handle);
echo $linecount;</code>

fgets() lit une seule ligne en mémoire à la fois, ce qui réduit considérablement l'utilisation de la mémoire.

Alternativement, fgetc() peut être utilisé pour compter les caractères de fin de ligne :

<code class="php">$file = "largefile.txt";
$linecount = 0;
$handle = fopen($file, "r");
while(!feof($handle)){
  $line = fgetc($handle);
  if($line == "\n" || $line == "\r\n"){
    $linecount++;
  }
}
fclose($handle);
echo $linecount;</code>

Cette approche utilise également moins de mémoire mais peut être plus lente en raison de la surcharge liée à la vérification des caractères de fin de ligne pour chaque caractère.

Ces techniques permettent un comptage de lignes efficace dans des fichiers texte volumineux sans problèmes de mémoire. Notez que ces méthodes peuvent encore rencontrer des limitations si une seule ligne dépasse la limite de 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