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!