Envoyé par unreal
Quand on veut compter le nombre de lignes d'un fichier texte, il y'a bien sur des bonnes et des mauvaise façons de procéder.
Exemple de mauvaise méthode
Le bout de code qui suit provient des commentaires utilisateurs sur PHP.Net :
Donc, file() charge entièrement en mémoire le fichier sous forme d'array, avant de compter le nombre de lignes.
L'analyse d'un log Apache de 55Mo consomme ainsi 130Mo de mémoire PHP (valeur déterminée grâce à memory_limit).
Exemple de bonne méthode
Cette fois, au lieu de charger complètement le fichier en mémoire, la fonction charge ligne par ligne. La consommation de mémoire à un moment donné ne dépasse donc pas la mémoire nécessaire pour charger une ligne de texte.
Remarque : la valeur numérique est à modifier selon la longueur maximale des lignes.
Conclusion
Se méfier des gens qui postent des exemples de code moisi.
Exemple de mauvaise méthode
Le bout de code qui suit provient des commentaires utilisateurs sur PHP.Net :
$lines = file ('filename');
$num_lines = count ($lines);
$num_lines = count ($lines);
Donc, file() charge entièrement en mémoire le fichier sous forme d'array, avant de compter le nombre de lignes.
L'analyse d'un log Apache de 55Mo consomme ainsi 130Mo de mémoire PHP (valeur déterminée grâce à memory_limit).
Exemple de bonne méthode
Cette fois, au lieu de charger complètement le fichier en mémoire, la fonction charge ligne par ligne. La consommation de mémoire à un moment donné ne dépasse donc pas la mémoire nécessaire pour charger une ligne de texte.
<?php
function LineCount($fileName) {
$fileCount = -1;
$h = @fopen($fileName, 'r');
if ($h) {
while (!feof($h)) {
fgets($h, 4096); // Voir remarque
$fileCount++;
}
fclose($h);
}
return($fileCount);
}
function LineCount($fileName) {
$fileCount = -1;
$h = @fopen($fileName, 'r');
if ($h) {
while (!feof($h)) {
fgets($h, 4096); // Voir remarque
$fileCount++;
}
fclose($h);
}
return($fileCount);
}
Remarque : la valeur numérique est à modifier selon la longueur maximale des lignes.
Conclusion
Se méfier des gens qui postent des exemples de code moisi.
Posté le 15/07/05 à 04:53