vendredi, mars 29, 2024
Nom d'utilisateur : Mot de passe :
Home > Quickies > Compteur de nombre de lignes
[NEWS]
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 :

$lines = file ('filename');
$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);
}


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. wink.gif

Posté le 15/07/05 à 04:53

Commentaires...[1-2]


RE: Compteur de nombre de lignes
xaviou
ton lien "memory_limit" est cassé...

Posté le 18/11/06 à 01:40

RE: Compteur de nombre de lignes

unreal

[AVATAR]

Messages : 15
Inscrit le : 07/03/04
xaviou a dit :

ton lien "memory_limit" est cassé...


Merci :)

Posté le 19/11/06 à 12:58

Compteur de nombre de lignes
Vous pourriez commenter si vous aviez un compte !