Comment compter le nombre de lignes d'un ficher ?? - PHP - Programmation
Marsh Posté le 22-06-2003 à 13:24:42
Y a pas de fonction toute faite (ou alors je l'ai loupée). Par contre, t'as ça : http://www.php.net/manual/fr/function.fgets.php
Ca lit une ligne. Donc t'ouvres ton fichier avec fopen(), tu fais un while(!feof($pointeur_fichier)) (cf l'exemple qui est dans le lien précédent) puis tu incrémentes un compteur dans ta boucle.
Marsh Posté le 22-06-2003 à 13:47:51
file() retourne le fichier dans un tableau ou chaque valeur de ce tableau correspond à une ligne du fichier.
et array_count_values compte le nombre de valeurs du tableau et par conséquent le nombre de ligne du fichier.
Marsh Posté le 22-06-2003 à 14:55:10
Hermes le Messager a écrit : file() retourne le fichier dans un tableau ou chaque valeur de ce tableau correspond à une ligne du fichier. |
Marsh Posté le 22-06-2003 à 15:01:16
Hermes le Messager a écrit : file() retourne le fichier dans un tableau ou chaque valeur de ce tableau correspond à une ligne du fichier. |
Et le jour où ton fichier est un log mensuel d'Apache tu fais un core dump parcequ'Apache n'a pas aimé charger un fichier de 1 Go
Marsh Posté le 22-06-2003 à 15:14:50
Ct juste un exemple
Y'a juste que file() est à éviter comme la peste selon les fichiers qu'on va utiliser.
Il y a trop de risque que ça plante (ou simplement sature les ressources du serveur) si les fichiers sont trop gros.
Marsh Posté le 22-06-2003 à 15:39:25
MagicBuzz a écrit : Ct juste un exemple |
Bof, de toutes manières, qu'est-ce que tu proposes de mieux qui empêche de charger le fichier ? Une boucle comme indiqué au début ? ça va pas surcharger le serveur ça si ton fichier fait 1 Go peut-être ?
Marsh Posté le 22-06-2003 à 15:41:47
Hermes le Messager a écrit : |
Bah nan puisque le buffer sera réutilisé à chaque tour de boucle.. A moins qu'il lise les 1Go d'un coup
Marsh Posté le 22-06-2003 à 15:49:13
*Syl* a écrit : Bah nan puisque le buffer sera réutilisé à chaque tour de boucle.. A moins qu'il lise les 1Go d'un coup |
En fait je sais pas, mais de toutes manières, buffer ou pas buffer, il faudra bien qu'il y ait un accès disque à chaque lecture de ligne. Et si le nombre de lignes est très important, l'occupation du serveur sera la même. Seule l'occupation mémoire diffèrera.
Marsh Posté le 22-06-2003 à 15:56:10
Hermes le Messager a écrit : |
Oui, mais dans le cas d'un fichier de 1Go, tu risques de facilement saturer l'occupation mémoire
Marsh Posté le 22-06-2003 à 15:57:50
Hermes le Messager a écrit : |
Pas au niveau mémoire.
Deplus, la vitesse de chargement du fichier sera sensiblement la même, donc la charge FS/CPU aussi.
Marsh Posté le 22-06-2003 à 15:59:03
MagicBuzz a écrit : |
je pense que concernant l'occupation mémoire tu as raison.
Marsh Posté le 22-06-2003 à 11:50:59
J'ai besoin de compter le nombre de lignes d'un fichier texte. Comment faire ? merci de m'aider