Korvin Szanto
Korvin Szanto

Reputation: 4511

PHP: Printing out status messages during runtime

I'm developing a long running php script that compiles scraped information from multiple sources, organizes them, and caches them in a database.

As this script has a very high runtime, I'd like to print out runtime status reports in order to track the progress.

for ($i = 1; $i<= 10; $i++) {
    echo "Starting iteration #$i\n";
    set_time_limit(40);
    echo "Time Limit set, starting 10 second sleep.\n";
    sleep(10);
    echo "Finishing iteration #$i\n\n";
}
echo "Iterations Finished.";

would output:

Starting iteration #1

Time Limit set, starting 10 second sleep

then wait 10 seconds and output:

Finishing iteration #1

Starting iteration #2

Time Limit set, starting 10 second sleep

then right before the php finishes parsing, it will output:

Iterations Finished.

What is the best way to achieve this?

Upvotes: 2

Views: 1541

Answers (2)

someone
someone

Reputation: 1468

Try writing the runtime status reports to a file, then viewing live updates of the file using ajax, per this question: Live feed of an updating file

Upvotes: 1

Tom
Tom

Reputation: 1701

If you are running PHP from the CLI you can output directly to stdout, without having to wait for the script to end, using :

$handle = fopen('php://stdout', 'r');
fwrite($handle, $output);

If run from CGI, which would be really bad for a script like this, you would have to change how the buffer acts with flush();

Upvotes: 3

Related Questions