PHP: Чтение с определенной точки в файле

Аналогично: Как прочитать только 5 последних строк текстового файла в PHP?

У меня большой лог-файл, и я хочу показать 100 строк с позиции X в файле. Мне нужно использовать 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"));
}

Я пытаюсь создать веб-просмотрщик журнала, который будет начинаться с конца файла и отображать 100 строк, а при нажатии кнопки «Далее» будут показаны следующие 100 строк, предшествующих ему.

5
задан Community 23 May 2017 в 12:29
поделиться