PHP: эквивалент fgets для чтения из _bottom_ файла? - PullRequest
0 голосов
/ 03 сентября 2011

У меня есть файл, который обновляется путем добавления, но этот файл становится огромным (500 МБ).Я хотел бы прочитать последние 50 строк в файле.Как это можно сделать?

Ответы [ 2 ]

4 голосов
/ 03 сентября 2011

Tail -n50 вернет последние 50 строк файла.

$filename = 'test.html';
$output = shell_exec('exec tail -n50 ' . $filename);
echo $output;

Следовательно, вам не нужно загружать весь файл в память.

Edit:

Если вы хотите выводить «<br>» после каждой строки, которую вы делаете:

echo str_replace(PHP_EOL, '<br />', $output);
3 голосов
/ 03 сентября 2011

Вам нужно будет использовать fseek, чтобы переместить указатель файла на определенное количество байтов из конца файла:

$fp = fopen('myfile','r');
fseek($fp,-1024, SEEK_END);
$last_kb_of_file = fgets($fp,1024);

Вам нужно будет указать fgets, сколько байт вы хотите прочитать, а не сколько строк.Он понятия не имеет, каков формат файла.Вам придется разделить результат на новую строку и посмотреть, есть ли у вас 50 строк.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...