A hint for PHP beginners like me:
The buffered output which is write by fflush() has nothing to do with the output buffer which is initiated by the ob_start() function.
(PHP 4 >= 4.0.1, PHP 5, PHP 7, PHP 8)
fflush — Envoie tout le contenu généré dans un fichier
Force l'écriture de toutes les données bufferisées dans le fichier désigné
par stream
.
stream
Le pointeur de fichier doit être valide et pointer sur un fichier ouvert avec succès par fopen() ou fsockopen() (et pas encore fermé par fclose()).
Cette fonction retourne true
en cas de succès ou false
si une erreur survient.
Exemple #1 Écriture d'un fichier en utilisant fflush()
<?php
$filename = 'bar.txt';
$file = fopen($filename, 'r+');
rewind($file);
fwrite($file, 'Foo');
fflush($file);
ftruncate($file, ftell($file));
fclose($file);
?>
A hint for PHP beginners like me:
The buffered output which is write by fflush() has nothing to do with the output buffer which is initiated by the ob_start() function.
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.