PHP: вывести последнюю строку огромного файла текстового журнала

У меня огромный файл журнала (около 1 000 000 строк). Я хотел бы получить последнюю строку и удалить ее из файла с помощью PHP. Каков самый быстрый способ сделать это?

Я пытался:

$logfile = escapeshellarg("/path/to/logfile"); $lastline = `tail -n 1 "$logfile"`; // obtained the last line 

Является ли вышеуказанный подход достаточно эффективным? и как удалить последнюю строку из файла?

Из ответа Джона ниже, вот коды:

 $buffer_size = 1000; $fh = fopen("/path/to/logfile", "r+"); fseek($fh, -$buffer_size, SEEK_END); $content = fgets($fh, 100); while(strrpos($content, PHP_EOL) != false) { fseek($fh, -$buffer_size); // move backward for extra -1000 $content = fgets($fh, $buffer_size); } $pos_last_eol = strrpos($content, PHP_EOL); fseek($fh, $pos_last_eol); // seek to that position ftruncate($fh, ftell($fh)); fclose($fh);