8.11. Flushing Output to the Browser
Problem
You want to force output to be sent to the browser. For example, before doing a slow database query, you want to give the user a status update.
Solution
Use flush( )
:
print 'Finding identical snowflakes...'; flush(); $sth = $dbh->query( 'SELECT shape,COUNT(*) AS c FROM snowflakes GROUP BY shape HAVING c > 1');
Discussion
The flush( )
function sends all output that PHP
has internally buffered to the web server, but the web server may
have internal buffering of its own that delays when the data reaches
the browser. Additionally, some browsers don’t
display data immediately upon receiving it, and some versions of
Internet Explorer don’t display a page until
they’ve received at least 256 bytes. To force IE to
display content, print blank spaces at the beginning of the page:
print str_repeat(' ',300); print 'Finding identical snowflakes...'; flush(); $sth = $dbh->query( 'SELECT shape,COUNT(*) AS c FROM snowflakes GROUP BY shape HAVING c > 1');
See Also
Recipe 18.18; documentation on flush( )
at http://www.php.net/flush.
Get PHP Cookbook now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.