PHP在文本文件中附加行

时间:2015-08-24 10:52:40

标签: php

我有一个生成错误日志的PHP脚本。现在我将脚本设置为在每个成功的SQL插入上附加一行。

但是在150万条记录之后它变得有点满满。我想让我的日志记录最多行,但我不知道如何在不删除文件的情况下读取/删除行。

我们说我的文件最多可以有20个文件,之后它应该删除第一行并附加另一行。

有人能指导我正确的方向吗?或者如果要发布脚本,请详细说明。

2 个答案:

答案 0 :(得分:3)

  

它应该删除第一行并附加另一行。

这是一项昂贵的操作,因为它涉及读取整个文件,忽略第一行,然后将整个文件写回来。如果你只需要20行,这不是什么大问题。如果您想要20K线路,并且您的更新频率并不罕见,那将是一件大事。

更好的方法是旋转整个文件;当一个文件填满时,开始写入另一个文件,并且只保留N个最后的文件。如果在Linux上,您可以使用logrotate中的crontab来解决此问题。关于如何设置它有很多很好的教程(here是一个)。这是许多工具已采用的方法,例如Apache Web服务器。

答案 1 :(得分:0)

也许PHP具体(怀疑它,我找不到它)。两个人用PHP手动完成它需要读/写整个日志文件,这将耗费资源(数百万行)。您可以检查一些可以执行此操作的OS工具,例如@ donald123说。

我的方法是每天使用一个日志文件(或其他适合的日期)。并且一次清理旧的日志文件。