SunshinePHP Developer Conference 2015

fflush

(PHP 4 >= 4.0.1, PHP 5)

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

説明

bool fflush ( resource $handle )

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

パラメータ

handle

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

返り値

成功した場合に TRUE を、失敗した場合に FALSE を返します。

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

<?php
$filename 
'bar.txt';

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

参考

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

add a note add a note

User Contributed Notes 2 notes

up
1
jzho327 at cse dot unsw dot edu dot au
11 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.
up
1
oryan at zareste dot com
8 years ago
Just a note that fflush takes care of the cache already, at least on my server.  Using clearstatcache before reading a previously written file also worked, but lagged the output time much more noticeably (by two or three seconds), probably due to excess cache erasing beyond files.
To Top