我们假设我们有一个程序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,所以它不关心另一个进程是否正在写入此文件。
谢谢
答案 0 :(得分:0)
作为建议,对PHP
脚本文件使用连续的Ajax调用(例如5秒间隔),并通过偏移量获取文件内容。您可以将文件的当前偏移量存储到SESSION
或COOKIE
。
您可以使用PHP
的{{3}}功能获取文件偏移量。
由于PHP
的官方文件定义了ftell()
:
ftell - 返回文件读/写指针的当前位置
此外,ftell函数可能有用,因为PHP
的官方文档定义了它:
stream_get_contents - 将流的剩余部分读入字符串
然后,在每个间隔中,将响应数据附加到HTML标记。