请教PHP fflush 的问题, not working
Jun 06, 2016 pm 08:21 PM
有没有用过 fflush
函数
官方解释是这样说的:
Flushes the output to a file
This function forces a write of all buffered output to the resource pointed to by the file handle.
也就是说把文件的写入缓存强行释放输出到文件指针.
http://php.net/manual/en/function.fflush.php
但我发现 fwrite 在执行完之后, 内容就马上写入文件了. 不需要fflush, 也不需要fclose, 对这个问题感到很疑惑, fflush 究竟有提供了什么作用.
代码:
<?php $fp = fopen("fflush.txt", "w+"); for ($i = 0; $i < 10; $i++) { fwrite($fp, "Write something here\n"); // 马上写入内容, 根本不存在 buffer 一说啊! sleep(1); } fflush($fp); fclose($fp);
回复内容:
有没有用过 fflush
函数
官方解释是这样说的:
Flushes the output to a file
This function forces a write of all buffered output to the resource pointed to by the file handle.
也就是说把文件的写入缓存强行释放输出到文件指针.
http://php.net/manual/en/function.fflush.php
但我发现 fwrite 在执行完之后, 内容就马上写入文件了. 不需要fflush, 也不需要fclose, 对这个问题感到很疑惑, fflush 究竟有提供了什么作用.
代码:
<?php $fp = fopen("fflush.txt", "w+"); for ($i = 0; $i < 10; $i++) { fwrite($fp, "Write something here\n"); // 马上写入内容, 根本不存在 buffer 一说啊! sleep(1); } fflush($fp); fclose($fp);
给你参考一个方法 stream_set_write_buffer
,默认的 buffer_size
是 8K
,也就是说,fwrite
如果一次写入的数据量大于 buffer_size
,会拆分写入。这种情况在多进程操作同一文件时需要考虑,通常情况下 fflush
是没多大作用的,不过加了也无所谓,毕竟 fopen
还能打开其他的 文件
似的资源。

Heißer Artikel

Hot-Tools-Tags

Heißer Artikel

Heiße Artikel -Tags

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

PHP 8.4 Installations- und Upgrade-Anleitung für Ubuntu und Debian

So richten Sie Visual Studio-Code (VS-Code) für die PHP-Entwicklung ein
