gpt4 book ai didi

PHP:从文件中的某个点读取

转载 作者:可可西里 更新时间:2023-11-01 14:04:33 25 4
gpt4 key购买 nike

类似于:How to read only 5 last line of the text file in PHP?

我有一个很大的日志文件,我希望能够显示文件中从位置 X 开始的 100 行。我需要使用 fseek 而不是 file() 因为日志文件太大。

我有一个类似的功能,但它只会从文件末尾读取。如何修改它以便也可以指定起始位置?我还需要从文件末尾开始。

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"));
}

我想做的是创建一个基于 Web 的日志查看器,它将从文件末尾开始显示 100 行,当按下“下一步”按钮时,将显示它之前的下 100 行。

最佳答案

如果您使用的是 Unix,则可以使用 sed 工具。例如:从文件中获取第 10-20 行:

 sed -n 10,20p errors.log

您可以在脚本中执行此操作:

<?php
$page = 1;
$limit = 100;
$off = ($page * $limit) - ($limit - 1);

exec("sed -n $off,".($limit+$off-1)."p errors.log", $out);
print_r($out);

行在 $out 数组中可用。

关于PHP:从文件中的某个点读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10712063/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com