假设我们有一个程序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,因此它不在乎是否有其他进程正在对此文件进行写入。
谢谢
建议,对PHP
脚本文件使用Ajax连续调用(例如5秒间隔),并通过offset获取文件内容。您可以将文件的当前偏移量存储到SESSION
或中COOKIE
。
您可以使用PHP
的ftell函数获取文件偏移量。
正如PHP
的正式文件所定义的ftell()
:
ftell —返回文件读/写指针的当前位置
另外,由于的官方文档定义了stream_get_contents()函数,该函数可能会很有用PHP
:
stream_get_contents —将流的其余部分读取到字符串中
然后,在每个间隔中,将响应数据附加到HTML标签。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句