手册说它将输出刷新到文件。另外他们举了一个例子。
$filename = 'bar.txt';
$file = fopen($filename, 'r+');
rewind($file);
fwrite($file, 'Foo');
fflush($file);
ftruncate($file, ftell($file));
fclose($file);
我试图理解它的必要性。我做的是以下内容:
fflush($file);
并再次运行它。frwite()
行更改为fwrite($file, 'Foo'); die();
现在,我没有看到使用fflush()
的重点。
在这个例子中,我无法看到fflush的必要性。你能提供一个真正需要fflush()
的例子吗?
答案 0 :(得分:3)
fflush()提供与flush()相同的必要性,不同之处在于输出发送到文件而不是浏览器。
基本上它正在做的是强制立即写入数据,而不是将其全部存储在缓冲区中,直到它准备好被写入。这在几种情况下非常有用,例如 - 使用linux命令tail
监视日志:https://en.wikipedia.org/wiki/Tail_(Unix)。
答案 1 :(得分:3)
fflush
为了提高效率,当我们调用fwrite
或fputcsv
等函数时,PHP的核心系统库不一定会立即写入文件。它将它们存储在缓冲区中并在一段时间后同时存储。
例如,假设您有循环,并且在该循环中调用fputcsv
函数,那么PHP的系统库不一定会在每个循环中将其存储到文件中。
fflush
?但是为了记录日志,我们需要确保尽快看到日志,因此最好在每个fflush
之后使用fwrite
。除了记录之外,我们不需要强制冲洗。让PHP内部处理效率。
此函数强制将所有缓冲的输出写入文件句柄指向的资源。
fflush
PHP Documentaiton