What are some best practices for reading and formatting the last 10 entries of a .log file using PHP?

When reading and formatting the last 10 entries of a .log file using PHP, it is important to efficiently handle large log files without loading the entire file into memory. One approach is to use fseek to move the file pointer to the end of the file and read backwards until the desired number of entries is reached. Then, format and display the entries accordingly.

$file = 'example.log';
$lines = 10;

$handle = fopen($file, 'r');
$line = '';
$pos = -2;

while ($lines > 0) {
    while (fseek($handle, $pos, SEEK_END) !== -1) {
        if (fgetc($handle) === "\n") {
            $lines--;
        }
        $pos--;
    }

    fseek($handle, $pos + 2, SEEK_END);
    $line = fgets($handle) . $line;
}

fclose($handle);

$entries = explode("\n", $line);
$entries = array_reverse($entries);

foreach ($entries as $entry) {
    // Format and display the log entry
    echo $entry . "<br>";
}