note 28885 added to function.fflush

From: Date: Mon, 27 Jan 2003 05:42:13 +0000
Subject: note 28885 added to function.fflush
Groups: php.notes 
Request: Send a blank email to php-notes+get-42795@lists.php.net to get a copy of this message
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. -- http://www.php.net/manual/en/function.fflush.php http://master.php.net/manage/user-notes.php?action=edit+28885 http://master.php.net/manage/user-notes.php?action=delete+28885 http://master.php.net/manage/user-notes.php?action=reject+28885

« previous php.notes (#42795) next »