I have an import that needs to notify the user each time an item has been successfully imported into the database. Is there a way to loop, perform some functionality, provide the output message, and then loop through again with the same action?
views:
129answers:
2You can use the flush()
function to send output to the user before the PHP script has finished.
flush
— Flush the output bufferFlushes the output buffers of PHP and whatever backend PHP is using (CGI, a web server, etc). This effectively tries to push all the output so far to the user's browser.
flush()
has no effect on the buffering scheme of your web server or the browser on the client side. Thus you need to call bothob_flush()
andflush()
to flush the output buffers.Several servers, especially on Win32, will still buffer the output from your script until it terminates before transmitting the results to the browser.
Server modules for Apache like
mod_gzip
may do buffering of their own that will causeflush()
to not result in data being sent immediately to the client.Even the browser may buffer its input before displaying it. Netscape, for example, buffers text until it receives an end-of-line or the beginning of a tag, and it won't render tables until the
</table>
tag of the outermost table is seen.Some versions of Microsoft Internet Explorer will only start to display the page after they have received 256 bytes of output, so you may need to send extra whitespace before flushing to get those browsers to display the page.
This would be used after you display a message or whatever.
echo "Patience";
while (!done)
{
echo ".";
flush();
}
Not an exact duplicate, but related to http://stackoverflow.com/questions/951556/how-can-you-push-data-to-a-web-page-client/951785#951785