0

我目前有一个日志文件流(文本格式),它通过运行进程不断附加。我正在使用 PHP 将其处理为 JSON 格式,然后使用 jQuery 的 getJSON 对其进行解析。

我想知道在日志文件中获取数据的实用方法是什么。我使用了 jQuery 的 post 函数,该文件太长而无法获取。函数 getJSON 很好,但是日志文件太长以至于 PHP 无法处理它,所以它没有被传递给函数。

我曾考虑过限制日志文件中的行数(来自 CentOS 的 Tee),并从日志文件中获取一定数量的行(对于速度来说不切实际),但我该怎么做呢?

4

1 回答 1

1

要仅读取文件的最后一部分,请fseek到一个好的位置并从那里开始。例如:

define('FILE', '/var/log/logfile');
define('SIZE', 1024*1024);
if (filesize(FILE) <= SIZE) {
  $text = file_get_contents(FILE);
} else {
  $fh = fopen(FILE, 'r');
  fseek($fh, -SIZE, SEEK_END);
  // Remove up to newline to avoid a broken line
  $skip = strlen(fgets($fh));
  $text = fread($fh, SIZE - $skip);
  fclose($fh);
}
// Do your work with $text here...
于 2012-06-16T22:10:08.750 回答