手册说它将输出刷新到一个文件中。此外,他们还举了一个例子。
$filename = 'bar.txt';
$file = fopen($filename, 'r+');
rewind($file);
fwrite($file, 'Foo');
fflush($file);
ftruncate($file, ftell($file));
fclose($file);
我试图理解它的必要性。我所做的是:
- 我创建了一个bar.txt文件
- 我运行了脚本
- 我打开bar.txt,看到里面有"Foo",然后我又把文件清空了
- 然后。。。我从脚本中删除了
fflush($file);
,然后再次运行它 - 结果完全一样。我又一次把文件清空了
- 之后,我将
frwite()
行更改为fwrite($file, 'Foo'); die();
- 再次。。。相同的结果。。。里面有"Foo"的文件
现在,我不认为使用fflush()
有什么意义。
在这个例子中,我看不出fflush的必要性。你能提供一个fflush()
确实必要的例子吗。
链接:http://php.net/manual/en/function.fflush.php
fflush
为了提高效率,当我们调用像fwrite
或fputcsv
这样的函数时,PHP的核心系统库不一定会立即写入文件。它将它们存储在缓冲区中,并在一段时间后同时存储。
例如,假设你有一个循环,在这个循环中你调用fputcsv
函数,那么PHP的系统库不一定会在每个循环中将它存储到文件中。
那么使用fflush
有什么意义呢
但出于日志记录的目的,我们需要确保尽快看到日志,因此最好在每次fwrite
之后使用fflush
。除了日志记录之外,我们不需要强制刷新。让PHP内部处理效率。
参考
此函数强制将所有缓冲输出写入文件句柄所指向的资源。
fflush
关于的PHP文档
fflush()提供了与flush()相同的必要性,不同之处在于输出被发送到文件而不是浏览器。
基本上,它所做的是强制数据立即写入,而不是将其全部存储在缓冲区中,直到可以写入为止。这在几种情况下可能很有用,例如使用linux命令tail
监视日志:https://en.wikipedia.org/wiki/Tail_(Unix)。