The use of fflush() seems to be useful when a resource handler is opened via 'r+' or 'a+', whence the user wish to read and write with one fopen command. Normally in such situation, for some reason everyone do
$fileName = "myfile";
$fp = fopen($fileName, "r");
..
// read the content
..
fclose($fp);
$fp = fopen($fileName, "a");
..
// write some new content
..
fclose($fp);
Now, it's probably sensible if you are writing completely new contents but if you're appending a few lines of text to a large file, to me this seems waste of resource to read in the content, then wipe the file, and then rewrite with almost the same content. In such case, maybe a single fopen with "a+" will suffice, provided you call fflush() before you actually write to the file.
Example,
suppose 'textfile' contain
line1: blah blah blah
line2: eni mani mu
line3: I can't believe it's not Java
[new line]
and you did
$fp = fopen("textfile", "a+");
fwrite($fp, "line4: at least it's not C#\n");
fclose($fp);
you will get
line1: blah blah blah
line2: eni mani mu
line3: I can't believe it's not Java
line1: blah blah blah
line2: eni mani mu
line3: I can't believe it's not Java
line4: as long as it's not C#\n
[new line]
instead, you should do
$fp = fopen("textfile", "a+");
fflush($fp);
fwrite($fp, "line4: as long as it's not C#\n");
// or maybe even
// $newtext = "line4: as long as it's not C#\n";
// fwrite($fp, $newtext, strlen($newtext));
fclose($fp);
which will give you the desired result,
line1: blah blah blah
line2: eni mani mu
line3: I can't believe it's not Java
line4: as long as it's not C#\n
[new line]
Now, I am new to PHP (really started coding yesterday or so) so please don't flame me if there is anything terribly wrong. I do however like to see someone explain why everyone fopen(..,"r"); and then fopen(..,"a"); and hardly anyone use fopen(..,"a+"); because it can be done with the help of fflush().
...Or maybe fflush() is just as wasteful.