我目前有一个日志文件流(文本格式),它通过运行进程不断附加。我使用PHP将其处理为JSON格式,然后使用jQuery的getJSON进行解析。
我想知道在日志文件中获取数据的实用方法是什么。我使用了jQuery的post函数,该文件太长而无法获取。函数getJSON很好,但是日志文件足够长,以至于PHP无法处理它,所以它不会传递给函数。
我考虑过限制日志文件中的行数(来自CentOS的Tee'd),并从日志文件中获取一定数量的行(速度不切实际),但我该怎么做?
答案 0 :(得分: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...