我遇到了一个问题.我在Linux机器上登录,其中写了几个正在运行的进程的输出.这个文件有时会非常大,我需要从该文件中读取最后一行.
问题是这个动作将经常通过AJAX请求调用,当该日志的文件大小超过5-6MB时,它对服务器来说并不好.所以我想我必须阅读最后一行,但不要读取整个文件并通过它或将其加载到RAM中,因为这只会加载到我的盒子中.
是否有任何针对此操作的优化,以便它运行顺畅,不会损害服务器或杀死Apache?
我有的其他选择是,exec('tail -n 1 /path/to/log')但它听起来不太好.
稍后编辑:我不想把文件放在RAM中,因为它可能会变得很大.fopen()不是一种选择.
我有这个问题......回答非常好,它也是.但是,奇怪的是,如果日志文件有一个唯一的最后一行(即前几行与前一行不同),它会正确返回最后一行,tail -n 1 "file"但如果最后几行与最后一行相似,它返回所有相似的行.
让我演示给你看....
它正在阅读的文件是......
frame= 1065 fps= 30 q=1.6 size= 11977kB time=35.54 bitrate=2761.1kbits/s
frame= 1081 fps= 30 q=2.7 size= 12174kB time=36.07 bitrate=2765.0kbits/s
frame= 1097 fps= 30 q=2.7 size= 12332kB time=36.60 bitrate=2759.9kbits/s
frame= 1113 fps= 30 q=3.0 size= 12487kB time=37.14 bitrate=2754.4kbits/s
frame= 1129 fps= 30 q=2.4 size= 12652kB time=37.67 bitrate=2751.3kbits/s
frame= 1145 fps= 30 q=2.4 size= 12824kB time=38.20 bitrate=2749.7kbits/s
frame= 1161 fps= 30 q=2.4 size= 12996kB time=38.74 bitrate=2748.1kbits/s
frame= 1176 fps= 30 q=2.7 size= 13162kB …Run Code Online (Sandbox Code Playgroud)