php - PHP的fflush()函数解释

标签 php filesystems

手册说它将输出刷新到一个文件中。另外,他们举了一个例子。

$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() 确实是必需的。

链接: http://php.net/manual/en/function.fflush.php

最佳答案

fflush

为了提高效率,当我们调用fwritefputcsv 等函数时,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/

相关文章:

java - 如何使用 EasyMock 模拟文件?

linux - Beaglebone 埃 : how to enable read only root file system

php - 如何从我的 Laravel 项目中的公共(public)图像的 URL 中删除/存储?

linux - ext3 中的日记 - 文档

php - 视频在完全加载之前不会播放

PHPUnit:模拟一个接受参数的方法

php - 使用 Zend Framework 保存密码

php - 这是使用 docker 安装 php-intl 的正确方法吗?

php - 从外部网站登录

javascript - 无法将文件添加到 chrome 开发人员工具源工作区