J'essaie d'obtenir la dernière ligne d'un fichier. Le fichier, ff.log, reçoit de nouvelles données toutes les secondes pendant que ffmpeg fonctionne. Le fichier journal ressemble à ceci:Folie de fichier Linux - Comportement étrange d'obtenir la dernière ligne du fichier journal
frame = 20 fps = 0 q = 7,7 size = temps 40ko = 1,24 bitrate = 266.1kbits/s
frame = 30 images par seconde = 28 q = 6,6 size = temps 51kb = 1,90 bitrate = 218,4 kbits/s
cadre = 40 fps = 24 q = 6,6 taille = 61kB temps = 2.60 bitrate = 191.4kbits/s
cadre = 47 fps = 20 q = 6.8 taille = 65kB temps = 3.08 bitrate = 173.8kbits/s
frame = 64 images par seconde = 22 q = 7,0 size = 84ko temps = 4.20 bitrate = 163.8kbits/s
(continue d'ajouter de nouvelles lignes par seconde ou plus rapide)
J'ai essayé
$line = `tail -n 1 $file`;
J'ai essayé d'utiliser fseek() avec un "php tail script".
Les deux ont abouti à un comportement étrange.
Je courais le mon script de ligne de commande et émis en sortie:
frame = XX fps = XX q = XX size = XX time = XX bitrate = XXkbits/s
Où XX a continué à augmenter pendant plusieurs secondes jusqu'à ce que ce soit la valeur de la dernière ligne.
Maintenant, dans mon script php, j'ai
echo "--$last_line--";
Quand je lance, la sortie est pendant quelques secondes, juste la ligne du journal avec un nombre croissant. Quand lorsqu'il atteint la fin, la sortie est
--ame = 7119 fps = 9 q = 13,8 size = temps 4809kB = 474,50 bitrate = 83.0kbits/s
Notez que le premier " - "est entré en collision avec le $ last_line et l'autre" - "n'est pas là.
Quelle est l'explication de ce comportement étrange?
Essayé avec écho "-". $ Ligne. "- \ n"; aussi –