我有一个生成错误日志的PHP脚本。现在我将脚本设置为在每个成功的SQL插入上附加一行。
但是在150万条记录之后它变得有点满满。我想让我的日志记录最多行,但我不知道如何在不删除文件的情况下读取/删除行。
我们说我的文件最多可以有20个文件,之后它应该删除第一行并附加另一行。
有人能指导我正确的方向吗?或者如果要发布脚本,请详细说明。
答案 0 :(得分:3)
它应该删除第一行并附加另一行。
这是一项昂贵的操作,因为它涉及读取整个文件,忽略第一行,然后将整个文件写回来。如果你只需要20行,这不是什么大问题。如果您想要20K线路,并且您的更新频率并不罕见,那将是一件大事。
更好的方法是旋转整个文件;当一个文件填满时,开始写入另一个文件,并且只保留N个最后的文件。如果在Linux上,您可以使用logrotate
中的crontab
来解决此问题。关于如何设置它有很多很好的教程(here是一个)。这是许多工具已采用的方法,例如Apache Web服务器。
答案 1 :(得分:0)
也许PHP具体(怀疑它,我找不到它)。两个人用PHP手动完成它需要读/写整个日志文件,这将耗费资源(数百万行)。您可以检查一些可以执行此操作的OS工具,例如@ donald123说。
我的方法是每天使用一个日志文件(或其他适合的日期)。并且一次清理旧的日志文件。