Допустим, у нас есть программа X, которая непрерывно записывает файл например /tmp/test.file
У меня есть скрипт на PHP, который передает этот файл клиенту, чтобы он мог скачать / прочитать его.
Как я могу делать это постоянно, когда данные пишутся в /tmp/test.file?
Если я использую код ниже
<?php
$fp = fopen("/tmp/test.file","r");
while(!feof($fp))
{
echo fread($fp,4096);
}
fclose($fp);
Он мгновенно останавливается, потому что читает весь файл до EOF, поэтому ему все равно, что другой процесс пишет в этот файл.
Спасибо
В качестве предложения используйте непрерывный вызов Ajax (например, 5-секундный интервал) для PHP
файл сценария, и получить содержимое файла через смещение. Вы можете сохранить текущее смещение файла в SESSION
или же COOKIE
,
Вы можете получить смещение файла с помощью PHP
«s ftell функция.
Как PHP
Официальный документ определяет ftell()
:
ftell — возвращает текущую позицию указателя чтения / записи файла
Также, stream_get_contents () функция может быть полезна как PHP
Официальный документ определяет это:
stream_get_contents — читает остаток потока в строку
Затем в каждом интервале добавляйте данные ответа в тег HTML.
Других решений пока нет …