Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2746 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  [Résolu] Afficher les 10 dernières lignes d'un fichier

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Résolu] Afficher les 10 dernières lignes d'un fichier

n°1718449
akalaan
Posté le 16-04-2008 à 12:21:14  profilanswer
 

Bonjour à tous,
 
Je cherche à afficher les 10 dernières lignes d'un fichier csv de log pour ensuite afficher sur un page.
 
J'ai fait des recherches et je pense devoir utiliser FSEEK mais je ne comprend pas comment m'en servir puisque le fichier n'a jamais la même taille.
 
Pourriez vous me donner une piste svp.
 
Merci d'avance,  
 
 
Codialement,


Message édité par akalaan le 16-04-2008 à 16:12:00
mood
Publicité
Posté le 16-04-2008 à 12:21:14  profilanswer
 

n°1718454
masklinn
í dag viðrar vel til loftárása
Posté le 16-04-2008 à 12:25:22  profilanswer
 

3e paramètre de fseek()


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1718461
akalaan
Posté le 16-04-2008 à 12:36:06  profilanswer
 

Merci de m'avoir répondu
 
SEEK_END je présume,
 

Code :
  1. function readLines($file){
  2. $open = fopen($file,'r');
  3. fseek($open,0,SEEK_END);
  4. $pos = ftell($open);
  5. $data = fgets($open,4096);
  6. echo $pos;
  7.         echo $data;
  8. }


 
Cela me renvoit 71 sachant que mon fichier test ressemble à cela mais ne m'affiche rien car je pense que le 71 doit être un \n.
 

Code :
  1. 1a
  2. 2b
  3. 3c
  4. 4d
  5. 5e
  6. 6f
  7. 7g
  8. 8h
  9. 9i
  10. 10j
  11. 11k
  12. 12l
  13. 13m
  14. 14n
  15. 15o
  16. 16p
  17. 17q
  18. 18r
  19. 19s
  20. 20t


 
Alors comment puis-je procéder pour afficher les 9 ligne au-dessus de sa position actuelle.
 
Cordialement,

n°1718465
masklinn
í dag viðrar vel til loftárása
Posté le 16-04-2008 à 12:40:28  profilanswer
 

Voir commentaires de la doc PHP, il y a des gens qui parlent de ça (sur la doc en)


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1718521
sielfried
Posté le 16-04-2008 à 13:14:59  profilanswer
 

Autre solution, probablement moins optimale (mais aussi moins prise de tête) :

Code :
  1. echo join(PHP_EOL, array_slice(file($chemin_vers_ton_fichier), -10));


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
n°1718522
wrksx
Posté le 16-04-2008 à 13:16:59  profilanswer
 

fseek($open,0,SEEK_END);
placera le pointeur a la fin du fichier.
a mon avis c'est pas un /n mais un eof...  
 
utilise une valeur négative pour le 2eme argument si tu veu remonter le pointeur de x octets...
 
pour mieux comprendre:
 
$open = fopen($file,'r'); //ouvre le fichier
 
fseek($open,-50,SEEK_END); //place le pointeur 50 octets avant la fin du fichier  
 
$pos = ftell($open); //recupère la position du pointeur ([taille du fichier en octets] - 50)
 
$data = fgets($open,4096); //recupère le contenu de la ligne (jusqu'au prochain /n) a partir de l'emplacement du pointeur
 
$pos2 = ftell($open); //recupère la position du pointeur [dernière position connue + nombre d'octet de la ligne lue]
 
echo 'position du pointeur avant lecture: ',$pos,'<br />';
echo 'donnee lues: ',$data,'<br />';
echo 'position du pointeur apres lecture: ',$pos2,'<br />';

n°1718624
akalaan
Posté le 16-04-2008 à 15:09:38  profilanswer
 

effectivement, cela me renvoit bien une ligne, mais il se trouve que des lignes de log n'ont pas forcément les mêmes longueurs.
 
Je suis dsl, je ne comprend pas tout.
On déplace le curseur en fonction des octets, et non en fonction des lignes.
 
Quand je change la valeur de la position , 50 donne 8h mais si je met 49 j'obtient h.

n°1718655
akalaan
Posté le 16-04-2008 à 16:11:25  profilanswer
 

Effectivement sielfried, ta solution est la plus rapide et la plus simple.
 

sielfried a écrit :

Autre solution, probablement moins optimale (mais aussi moins prise de tête) :

Code :
  1. echo join(PHP_EOL, array_slice(file($chemin_vers_ton_fichier), -10));



 
Merci à tous,


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  [Résolu] Afficher les 10 dernières lignes d'un fichier

 

Sujets relatifs
[Résolu] porté d'une variable vector[shell] lire un fichier mais pas la première ni dernière ligne
[Résolu] CSS dans jspSupprimer lignes sous condition
[résolu]Interdire une suppression[Résolu]java.util.zip ne pas avoir le chemin des fichiers
[RESOLU] [VB] Commenter un noeud xml en VBRESOLU PHP lecteur mp3 / lire mp3 a partir d'un dossier
insérer des lignes dans des fichiers 
Plus de sujets relatifs à : [Résolu] Afficher les 10 dernières lignes d'un fichier


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR