flush only deals with the server side: anything buffered by php is (hopefully) actually sent out over the tcp connection. When RTFM'ing, you get this (notice all the caveats--emphasis added):
Description
void flush ()
Flushes the output buffers of PHP and whatever backend PHP is using (CGI, a web server, etc.) This effectively <b><i>tries</i></b> to push all the output so far to the user's browser.
Note: flush() has no effect on the buffering scheme of your webserver or the browser on the client side.
Several servers, especially on Win32, will still buffer the output from your script until it terminates before transmitting the results to the browser.
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...