gpt4 book ai didi

php - Linux 文件疯狂 - 获取日志文件最后一行的奇怪行为

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:01:53 25 4
gpt4 key购买 nike

我正在尝试获取文件的最后一行。ff.log 文件在 ffmpeg 工作时每秒获取新数据。日志文件如下所示:

frame= 20 fps= 0 q=7.7 size= 40kB time=1.24 bitrate= 266.1kbits/s
frame= 30 fps= 28 q=6.6 size= 51kB time=1.90 bitrate= 218.4kbits/s
frame= 40 fps= 24 q=6.6 size= 61kB time=2.60 bitrate= 191.4kbits/s
frame= 47 fps= 20 q=6.8 size= 65kB time=3.08 bitrate= 173.8kbits/s
frame= 64 fps= 22 q=7.0 size= 84kB time=4.20 bitrate= 163.8kbits/s
(keeps adding new lines every second or faster)

我试过了

$line = `tail -n 1 $file`;

我尝试将 fseek() 与“php tail script”一起使用。

两者都导致了一些奇怪的行为。

我从命令行运行我的脚本并输出:

frame= XX fps= XX q=XX size= XX time=XX bitrate= XXkbits/s

其中 XX 持续增加几秒钟,直到它是最后一行的值。

现在,在我的 php 脚本中,我有

echo "--$last_line--";

当我运行它时,输出只有几秒钟,只是数字递增的日志行。当它到达终点时,输出是

--ame= 7119 fps= 9 q=13.8 size= 4809kB time=474.50 bitrate= 83.0kbits/s

请注意,第一个“--”与 $last_line 发生冲突,而另一个“--”不存在。

这种奇怪行为的解释是什么?


最佳答案

这可能是因为它认为您要求它打印“$laSTLine--”...

尝试

echo '--' . $lastline . '--';

你可能还想做类似的事情

var_dump($lastline); die();

向您展示变量中的确切内容,因为这将为您提供更多信息。

但是,我建议您发布整个脚本,以便其他人可以尝试查看问题所在。

编辑 查看该文件,它似乎仅使用\r 作为行终止符。这会导致您看到的问题(这意味着“返回到行的开头”)- 这意味着所有日志都显示为最后一行。

尝试使用他的命令

cat ff.log | tr "\r" "\n" | tail -n 2 | head -n 1

获取日志的最后一行。

关于php - Linux 文件疯狂 - 获取日志文件最后一行的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1240469/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com