Forum Clubic

[RESOLU][PHP] Lecture de fichier - en commencant par la fin

Bonjour tout le monde, voila je me remets a php depuis peu et j’aimerais lire les 10 dernieres lignes d’un fichier texte sans avoir a parcourir tout le fichier puis prendre les dernieres lignes.
J’aimerais commencer a lire a partir de la fin du fichier. C’est possible? :??: Et si oui je voudrais bien le nom des fonctions me permettant de m’en sortir. J’ai regarde sur le web mais j’ai rien eu :frowning: .

Avec un fopen() puis un fseek() pour se positionner à la fin du fichier, et un peu de génie pour reformer les lignes (car tu devras les lire à l’envers), oui, sûrement.

Sinon tu as la technique barbare : file() + boucle.

Tu peux creer un fichier intermédiare en externe en utilisant la commande
tail -10,
puis tu traites ce fichier.

Merci a tout les deux :bounce: je pense que c’est bon, je regarde la doc et j’essayerais ce soir. :super:

:jap:

Finalement le truc de prendre les dernieres lignes vient de tomber a l’eau, il a ete decide que le fichier serait efface periodiquement donc dans ce cas, pas de chichi je vais faire a la barbare. J’aimerais tout de meme controler si la taille du fichier est pas extravagante et ensuite utiliser le “tail” pour en avoir que la moitie par exemple. Mon probleme maintenant est que je ne trouve pas de “tail” dans la doc php ni sur le net. Tout ce que je veux c’est par exemple j’ai un fichier txt de 10 ko (disons que c’est trop gros) et je voudrais avoir un fichier temp d’environ 1ko contenant les x dernieres lignes du gros fichier.

tail c’est une commande Unix, mais qui a son équivalent en Windows.
il faut donc que tu le considères comme un programme externe, à lancer par system()
http://www-inf.int-evry.fr/COURS/UNIX/fich…an1/tail.1.html
http://www.framasoft.net/article3740.html

Alors, tu ferais mieux de passer à la barbare par file() plutôt que tail. Bien que ce soit une bonne alternative, tu vas créer un processus qui va faire pareil (analyser le fichier ligne par ligne).

Ca sera plus lourd que par exemple lire le fichier ligne par ligne (via fgets) et conserver juste les 10 dernières lignes.

Ok merci tous les deux :jap: :jap: