我有一个文件用于记录客户端的IP地址。他们想保留文件的最后500行。它在一个带有PHP4的Linux系统上(哦,不!)。如何使用Linux或PHP将文件保持为1000行?
我打算使用新的IP地址一次添加一行文件。我们无法访问cron,因此我可能需要使此函数也可以执行行限制清理。
我想或者使用像exec('tail [some params]')
或者可能用PHP读取文件,在换行符中将其分解为数组,获取最后1000个元素并将其写回。似乎有点内存密集虽然。
什么是更好的方法来做到这一点?
更新:
每低于@ meagar的评论,如果我想用压缩功能,我将如何做到这一点我的PHP脚本? (没有进入的cron)
if(rand(0,10) == 10){ shell_exec("find . logfile.txt [where size > 1mb] -exec zip {} \;") }
将拉链自动枚举的文件,如果有一个现有的文件或做我需要做手工?
处理此问题的更简单和更标准的方法是定期轮换日志文件。只要文件达到一定的大小时压缩文件,并启动一个新的日志文件。您将结束当前的'.log'文件和一系列压缩的'.log.1.gz','.log.2.gz'文件。 – meagar 2011-06-14 15:52:17
我同意迈格尔这似乎是最好的方法,特别是与历史的角度! – freshnode 2011-06-14 15:57:52
@meagar是我可以从PHP做的事情吗?我在该问题中添加了更新的部分。如果你可以发布它作为答案,我会接受它。 – cwd 2011-06-14 16:18:18