CakeFest 2024: The Official CakePHP Conference

fflush

(PHP 4 >= 4.0.1, PHP 5, PHP 7, PHP 8)

fflush出力をファイルにフラッシュする

説明

fflush(resource $stream): bool

この関数は、バッファリングされた全ての出力をファイルハンドル stream が指すリソースに強制的に書き込みます。

パラメータ

stream

ファイルポインタは、有効なファイルポインタである必要があり、 fopen() または fsockopen() で正常にオープンされた (そしてまだ fclose() でクローズされていない) ファイルを指している必要があります。

戻り値

成功した場合に true を、失敗した場合に false を返します。

例1 fflush() を使用するファイル書き込みの例

<?php
$filename
= 'bar.txt';

$file = fopen($filename, 'r+');
rewind($file);
fwrite($file, 'Foo');
fflush($file);
ftruncate($file, ftell($file));
fclose($file);
?>

参考

  • clearstatcache() - ファイルのステータスのキャッシュをクリアする
  • fwrite() - バイナリセーフなファイル書き込み処理

add a note

User Contributed Notes 2 notes

up
19
michaelsy01[NXSPAM] at informantum dot de
5 years ago
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.
up
-18
jzho327 at cse dot unsw dot edu dot au
21 years ago
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.
To Top