php监视实时日志以获取更改

时间:2016-06-24 13:05:08

标签: php file logging

我正在尝试查看纯文本文件以进行任何更改。我想使用PHP并在添加新行时逐行读取文件。

有时可以添加1行,其他时候可以添加数十行。我想阅读每一行并检查它是否与任何关键词匹配..

这是我到目前为止所得到的,但它不是一行一行的...如果基于缓冲区。

<?php
$file='log.txt';
$line = $lastpos = 0;
while (true) {
    usleep(500000);
    clearstatcache(false, $file);
    $len = filesize($file);
    if ($len < $lastpos) {
        $lastpos = $len;
    }
    elseif ($len > $lastpos) {
        $f = fopen($file, "rb");
        if ($f === false) die();
        fseek($f, $lastpos);
        while (!feof($f)) {
            $buffer = fread($f, 4096);
                if ($lastpos > 0) {
                    if (strpos($buffer, 'MATCH') !== false) echo "$line\r\n";
                }
            flush();
            $line++;
        }
        $lastpos = ftell($f);
        fclose($f);
    }
}
?>

任何人都可以帮助我指出正确的方向。理想情况下,我不希望将日志保留在内存中,因为它可以增长到合理的大小。

由于

0 个答案:

没有答案