将文件保存为套接字并等到另一个进程写入结束

时间:2014-11-14 23:13:37

标签: php file-io

我们假设我们有一个程序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 个答案:

答案 0 :(得分:0)

作为建议,对PHP脚本文件使用连续的Ajax调用(例如5秒间隔),并通过偏移量获取文件内容。您可以将文件的当前偏移量存储到SESSIONCOOKIE

您可以使用PHP的{​​{3}}功能获取文件偏移量。

由于PHP的官方文件定义了ftell()

  

ftell - 返回文件读/写指针的当前位置

此外,ftell函数可能有用,因为PHP的官方文档定义了它:

  

stream_get_contents - 将流的剩余部分读入字符串

然后,在每个间隔中,将响应数据附加到HTML标记。