Ich versuche, die letzte Zeile einer Datei zu bekommen. Die Datei ff.log erhält jede Sekunde neue Daten, während ffmpeg funktioniert. Die Log-Datei sieht wie folgt aus:Linux-Datei Verrücktheit - seltsames Verhalten bekommen letzte Zeile der Protokolldatei
Rahmen = 20 fps = 0 q = 7,7 size = 40kB Zeit = 1,24 Bitrate = 266.1kbits/s
frame = 30 fps = 28 q = 6,6 size = 51kB Zeit = 1,90 Bitrate = 218,4 kbits/s Rahmen = 40 fps = 24 q = 6,6 Größe = 61kB Zeit = 2,60 Bitrate = 191,4kbits/s Rahmen = 47 fps = 20 q = 6,8 Größe = 65kB Zeit = 3,08 Bitrate = 173.8kbits/s
frame = 64 fps = 22 q = 7,0 size = 84kB time = 4.20 Bitrate = 163.8kbits/s
(behält jede Sekunde oder schneller Zugabe von neuen Linien)
Ich habe
versucht$line = `tail -n 1 $file`;
ich versucht, mit fseek() mit einem "php tail script".
Beide resultierten in einem seltsamen Verhalten.
lief ich mein Skript von der Kommandozeile und es ausgegeben:
frame = XX fps = XX q = XX size = XX Zeit = XX Bitrate = XXkbits/s
Wo XX nahm für einige Sekunden zu, bis es der Wert aus der letzten Zeile war. Jetzt
, In meinem PHP-Skript, ich habe
echo "--$last_line--";
Wenn ich es laufen, ist der Ausgang für einige Sekunden, nur die Protokollzeile mit steigenden Zahlen. Wenn, wenn das Ende erreicht hat, wird der Ausgang
--ame = 7119 fps = 9 q = 13.8 size = 4809kB Zeit = 474,50 Bitrate = 83.0kbits/s
anzumerken, dass die erste " - "kollidierte mit der $ last_line und der anderen" - "ist nicht da.
Was ist die Erklärung für dieses seltsame Verhalten?
Versucht mit Echo "-". $ Linie. "- \ n"; auch –