手册说它将输出刷新到一个文件中。另外,他们举了一个例子。
$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');死();
- 再次...相同的结果...一个包含“Foo”的文件。
现在,我看不出使用 fflush()
有什么意义。
在这个例子中我看不出fflush的必要性。您能否提供一个示例,其中 fflush()
确实是必需的。
最佳答案
fflush
为了提高效率,当我们调用fwrite
或fputcsv
等函数时,PHP 的核心系统库不一定会立即写入文件。它将它们存储在缓冲区中并在一段时间后同时存储。
例如,假设您有一个循环,并且在该循环中调用了 fputcsv
函数,那么 PHP 的系统库不一定在每个循环中都将其存储到文件中。
那么使用fflush
有什么意义呢?
但出于日志记录的目的,我们需要确保尽快看到日志,因此最好在每次 fwrite
之后使用 fflush
。对于日志记录以外的其他目的,我们不需要强制刷新。让 PHP 内部处理效率。
引用
This function forces a write of all buffered output to the resource pointed to by the file handle.
fflush
PHP Documentaiton
关于php - PHP的fflush()函数解释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37119672/