Я пытаюсь получить последнюю строку файла.
Файл ff.log получает новые данные каждую секунду, пока работает ffmpeg.
Файл журнала выглядит следующим образом:
кадр = 20 кадров в секунду = 0 q = 7,7 размера = 40 КБ времени = 1,24 битрейта = 266,1 Кбит / с
кадр = 30 кадров в секунду = 28 q = 6,6 размера = 51 кБ времени = 1,90 битрейта = 218,4 кбит / с
кадр = 40 кадров в секунду = 24 q = 6,6 размера = 61 кБ времени = 2,60 битрейта = 191,4 кбит / с
кадр = 47 кадров в секунду = 20 q = 6,8 размера = 65 кБ времени = 3,08 битрейта = 173,8 кбит / с
кадр = 64 кадра в секунду = 22 q = 7,0 размера = 84 кБ времени = 4,20 битрейта = 163,8 кбит / с
(продолжает добавлять новые строки каждую секунду или быстрее)
Я пытался
$line = `tail -n 1 $file`;
Я пытался использовать fseek () с " php tail script ".
Оба привели к странному поведению.
Я запустил мой скрипт из командной строки, и он вывел:
frame = XX fps = XX q = XX size = XX
время = битрейт XX = хкбит / с
Где XX продолжал увеличиваться в течение нескольких секунд, пока не стало значение из последней строки.
Теперь, в моем PHP-скрипте у меня есть
echo "--$last_line--";
Когда я запускаю его, вывод происходит в течение нескольких секунд, просто строка журнала с увеличивающимися числами. Когда он достигает конца, вывод равен
- ame = 7119 кадров в секунду = 9 q = 13,8 размера = 4809 кБ времени = 474,50 битрейта = 83,0 кбит / с
Обратите внимание, что первый "-" столкнулся с $ last_line, а другой "-" не существует.
Чем объясняется это странное поведение?