Сохраните файл как сокет и дождитесь окончания записи из другого процесса

Допустим, у нас есть программа 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, поэтому ему все равно, что другой процесс пишет в этот файл.

Спасибо

1

Решение

В качестве предложения используйте непрерывный вызов Ajax (например, 5-секундный интервал) для PHP файл сценария, и получить содержимое файла через смещение. Вы можете сохранить текущее смещение файла в SESSION или же COOKIE,

Вы можете получить смещение файла с помощью PHP«s ftell функция.

Как PHPОфициальный документ определяет ftell():

ftell — возвращает текущую позицию указателя чтения / записи файла

Также, stream_get_contents () функция может быть полезна как PHPОфициальный документ определяет это:

stream_get_contents — читает остаток потока в строку

Затем в каждом интервале добавляйте данные ответа в тег HTML.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]