fflush()
(PHP 4 >= 4.0.1, PHP 5, PHP 7)
将缓冲内容输出到文件
说明
fflush(resource $handle): bool
本函数强制将所有缓冲的输出写入$handle文件句柄所指向的资源。成功时返回TRUE
,或者在失败时返回FALSE
。
文件指针必须是有效的,必须指向由fopen()或fsockopen()成功打开的文件(并还未由fclose()关闭)。
参数
- $handle
文件指针必须是有效的,必须指向由fopen()或fsockopen()成功打开的文件(并还未由fclose()关闭)。
返回值
成功时返回TRUE
,或者在失败时返回FALSE
。
范例
File write example usingfflush()
<?php $filename = 'bar.txt'; $file = fopen($filename, 'r+'); rewind($file); fwrite($file, 'Foo'); fflush($file); ftruncate($file, ftell($file)); fclose($file); ?>
参见
clearstatcache()
清除文件状态缓存fwrite()
写入文件(可安全用于二进制文件)
A hint for PHP beginners like me: The buffered output which is write by fflush() has nothing to do with the output buffer which is initiated by the ob_start() function.
Sorry, the note I previously added regarding fflush() has a bug! when you read file by calling $fp = fopen("myfile", "a+"); and you wish to read the content, you have to call rewind($fp) before you attemp to read it. (Silly me) Or else if you tried something like $fp = fopen("myfile", "a+"); $content = fread($fp); // show that content is in fact null if ($content == NULL) print "but it must be first put to rewind<br>\n"; will result but it must be first put to rewind. [new line] in fact, if you are not careful (like me), and you opened it with $fp = fopen("myfile", "r+"); $content = fread($fp); .. // do something with content .. then you tried to again $content = fread($fp); without rewind, you'd get NULL again. This sounds trivial, but if you work with several file resources, with freads and fopens everywhere, you can get easily lost. So becareful.