Tương tự như: How to read only 5 last line of the text file in PHP?PHP: Đọc từ điểm nhất định trong tập tin
Tôi có một file log lớn và tôi muốn để có thể hiển thị 100 dòng từ vị trí X trong file. Tôi cần sử dụng fseek
thay vì file()
vì tệp nhật ký quá lớn.
Tôi có chức năng tương tự nhưng nó sẽ chỉ đọc từ cuối tệp. Làm thế nào nó có thể được sửa đổi để một vị trí bắt đầu có thể được xác định là tốt? Tôi cũng sẽ cần phải bắt đầu ở phần cuối của tập tin.
function read_line($filename, $lines, $revers = false)
{
$offset = -1;
$i = 0;
$fp = @fopen($filename, "r");
while($lines && fseek($fp, $offset, SEEK_END) >= 0) {
$c = fgetc($fp);
if($c == "\n" || $c == "\r"){
$lines--;
if($revers){
$read[$i] = strrev($read[$i]);
$i++;
}
}
if($revers) $read[$i] .= $c;
else $read .= $c;
$offset--;
}
fclose ($fp);
if($revers){
if($read[$i] == "\n" || $read[$i] == "\r")
array_pop($read);
else $read[$i] = strrev($read[$i]);
return implode('',$read);
}
return strrev(rtrim($read,"\n\r"));
}
Điều tôi đang cố gắng tạo trình xem nhật ký dựa trên web sẽ bắt đầu từ cuối tệp và hiển thị 100 dòng và khi nhấn nút "Tiếp theo", 100 dòng tiếp theo trước sẽ được hiển thị.
Dưới đây là chưa nhiều cách để làm điều này theo thứ tự hiệu quả: http://unix.stackexchange.com/questions/94318/awk-or-sed-efficiency#94320 – dukevin