Search code examples
phpajaxforeach

PHP showing output of foreach to screen, for each item


One thing I have noticed with php, is that nothing is output to the screen until the script has stopped working. For the project I am working on I feed in a list of over 100 items and it performs a HTTP request for each item and when finished, shows a page with the status of each item, success failure etc.

What I want to know is if there is a way to output the results of each 'foreach' loop as they happen? So the user watching the screen sees the magic happening one line at a time or after say 5 lines.

I have only ever seen this done with Ajax type requests, is that what I should be looking to do instead maybe? Can anyone point me to a php function that does this or is it not possible?


Solution

  • It may be better to store all script output in a buffer then flush the buffer when required.

    For example:

    <?php
    
    if (ob_get_level() == 0) ob_start();
    
    $test = Array('one','two','three','four');
    foreach ($test as $key=>$val)
    {
        echo $test;
        ob_flush();
        flush();
    }
    
    ob_end_flush();
    
    ?>
    

    Make sure you have mod_gzip disabled!