Real-time PHP Output Update with flush() In All Browsers
These days, i'm kinda into hot stuff each day but kinda not having time to document all those. So here I got a little time, let's skip the bla bla.
Have you ever seen how php output is shown on the browser? No matter what length code or how many loops you put into, the browser always wait to get EVERYTHING, every tiny thing from php output before showing it to the user. Now this isn't convenient eh?
Let's take a scenario where you have to get 1000 records from a database and do very high time consuming calculations on each record. So under normal conditions the user will be looking at a blank page for several minutes [or hours depending on your processor :D ]. This isn't any fault of php, of course if you run php from the terminal (WAMP users don't look confused now) you'll see the output in real-time. So what's preventing it?
Just like every other problem there's the easy short code to do this. Tested with Chrome and Firefox in a standard LAMP server without any server config changes
Usual php output code
1) echo str_pad("",1024," "); //BROWSER TWEAKS
As i mentioned browsers do their own buffering to wait for some amount of data before showing content to user
FF - 512 bytes
chrome - 1024 bytes
IE - why would you ask? :D
What above code does is adding 1024 blanks to the output, just to make it complete
2) echo " <br />" //BROWSER TWEAKS
Even after above tweak i found that Chrome doesn't show the output as expected. After few more hours of trial and error [at the workplace] I found that it need to read a newline before actually giving any output. Strange huh? So i simply added a html newline and VIOLA :D
Now the code seems working but only buffering (1) and (3) seem to be addressed. So lets make the code complete in a case the server had some bad-*** buffering and caching going. But you wont need all of these, just do trial and error to find the best methods for you.
|All times are GMT +5.5. The time now is 13:40.|