我想用PHP做尾部命令之类的动作,但是怎样才能把手表追加到文件里呢?
发布于 2009-07-09 07:27:54
我不相信有什么神奇的方法可以做到。您只需不断轮询文件大小并输出任何新数据。这实际上非常简单,唯一需要注意的是文件大小和其他统计数据被缓存在php中。此问题的解决方案是在输出任何数据之前调用clearstatcache()
。
下面是一个快速示例,其中不包括任何错误处理:
function follow($file)
{
$size = 0;
while (true) {
clearstatcache();
$currentSize = filesize($file);
if ($size == $currentSize) {
usleep(100);
continue;
}
$fh = fopen($file, "r");
fseek($fh, $size);
while ($d = fgets($fh)) {
echo $d;
}
fclose($fh);
$size = $currentSize;
}
}
follow("file.txt");
发布于 2013-01-05 04:31:06
$handle = popen("tail -f /var/log/your_file.log 2>&1", 'r');
while(!feof($handle)) {
$buffer = fgets($handle);
echo "$buffer\n";
flush();
}
pclose($handle);
发布于 2012-12-11 20:52:54
查看php-tail on Google code。它是用PHP和Javascript实现的两个文件,在我的测试中几乎没有什么开销。
它甚至支持使用grep关键字进行过滤(对于每秒输出帧速率等的ffmpeg非常有用)。
https://stackoverflow.com/questions/1102229
复制相似问题