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
Libérer: 2024-10-31 21:30:02
original
445 Les gens l'ont consulté

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>
Copier après la connexion

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal