Я не верю, что есть какой-то волшебный способ сделать это. Вам просто нужно постоянно опрашивать размер файла и выводить любые новые данные. Это на самом деле довольно просто, и единственное, на что стоит обратить внимание, это то, что размеры файлов и другие статистические данные кэшируются в php. Решением этой проблемы является вызов clearstatcache()
перед выводом любых данных.
Вот краткий пример, который не включает обработку ошибок:
function follow($file)
{
$size = 0;
while (true) {
clearstatcache();
$currentSize = filesize($file);
if ($size == $currentSize) {
usleep(100);
continue;
}
$fh = fopen($file, "r");
fseek($fh, $size);
while ($d = fgets($fh)) {
echo $d;
}
fclose($fh);
$size = $currentSize;
}
}
follow("file.txt");