Printing results immediately (php)

php

Solution

Using `flush` and/or `ob_flush`, you should get what you want.

Here is a quick demonstration :

for ($i=0 ; $i<10 ; $i++) {
    echo "$i<br />";
    ob_flush();
    flush();
    sleep(1);
}

Each second, a number will be sent to the browser, without waiting for the loop/script to end. (Without both flush and `ob_flush`, it waits until the end of the script to send the output)

Explanation about why you need both, quoting from the flush page in the manual :

Flushes the write buffers of PHP and whatever backend PHP is using (CGI, a web server, etc). This attempts to push current output all the way to the browser with a few caveats.

flush() may not be able to override the buffering scheme of your web server and it has no effect on any client-side buffering in the browser. It also doesn't affect PHP's userspace output buffering mechanism. This means you will have to call both ob_flush() and flush() to flush the ob output buffers if you are using those.

If this doesn't work for you, taking a look at the comments on the two pages of the manual can give you a couple of pointers on "why it could fail"

Problem

I have a php script that connects 10 different servers to get data. I want it to print the results of the 1st connection before the second one begins.

Original source