List Info

Thread: note 28885 deleted from function.fflush by betz




note 28885 deleted from function.fflush by betz
user name
2006-07-29 10:31:12
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

[1]

about | contact  Other archives ( Real Estate discussion Medical topics )