Note Submitter: jzho327 at cse dot unsw dot edu dot au
----
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.
--
PHP Notes Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub
.php
|