dfilkovi
dfilkovi

Reputation: 3081

PHP output to command line

I start my script from command line and it outputs things as they happen but a week ago it stopped outputing and now outputs everything when script finishes. I have ob_start() but as I know this does not effect command line output.

Upvotes: 8

Views: 18977

Answers (3)

oliverterrell
oliverterrell

Reputation: 81

An easy way to do it is to create a function in php like this:

function console_log($message) {
    $STDERR = fopen("php://stderr", "w");
              fwrite($STDERR, "\n".$message."\n\n");
              fclose($STDERR);
}

where $message is the desired output to command line. Then simply call the function wherever you would like to output and pass in whatever you want it to print.

Upvotes: 6

r00fus
r00fus

Reputation: 2632

You need to remove ob_start()... try this code on the command line, and it will print the text all at once:

<?
ob_start();
echo "test\n";
sleep(10);
echo "buffer\n";
?>

Upvotes: 6

pavpanchekha
pavpanchekha

Reputation: 2093

It'd be very helpful if you could post your script here, at least the relevant parts, but things I'd test are:

  • Did you turn on buffering?
  • Are you running the process in something like a nohup or something else that may be buffering it?
  • Did you change any other buffering settings?

Outputting only at the end of the script seems a buffering problem.

Upvotes: 0

Related Questions