When a PHP script is executed for a long time and it is not clear what it is happening, such as a long loop, a prolonged processing, rainy weather, or other magical things. That is, the desire to see what is happening with the data and at what stage of implementation is a script program. One of the options to use function flush() which clears PHP output buffer and all its contents are sent to the user's browser.
1 2 3 4 5 6 7 8 9 10 11 12 13 | <? header( 'Content-Type: text/plain; charset=utf-8' ); //unlimited script run time set_time_limit(0); //loop for ( $i =0; $i <1000; $i ++){ //data output echo "\nloop: $i progress: " . round ( $i /10). "%" ; //clear and send PHP output buffer flush (); //pause for clarity usleep(100000); } |
Another option is to use a script to write data to a separate file and load this file from time to time in the browser. You will need to write data file from the script:
1 2 3 4 5 6 7 8 | <? set_time_limit(0); for ( $i =0; $i <1000; $i ++){ //writing data to the file log.txt, you need to set file write permissions file_put_contents ( 'log.txt' , "loop: $i<br> progress: " . round ( $i /10). "%" ); //pause for clarity usleep(100000); } |
Further data file will load jQuery load function:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | <! DOCTYPE HTML> < html > < head > < meta charset = "UTF-8" /> < title >Progress</ title > < script type = "text/javascript" src = "http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" ></ script > < script language = "javascript" type = "text/javascript" > $(document).ready(function() { var reload = setInterval( function(){ //load data from file and display in element id="progress" $('#progress').load('log.txt'); }, 1000); //every second }); </ script > </ head > < body > < div id = "progress" ></ div > </ body > </ html > |