Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

If I echo a statement and no one hears it, does it ever get echoed? (PHP cron job question)

So I have a script that I debug with a bunch of echo statements. This is run every 3 minutes on my server by cron, and I sometimes leave the echo statements in there. They're not going to a browser, they're just going... anywhere?

This is a vague question I guess, but what happens when there's no end-user or output for an echo statement? Does it hog up memory? Does it just vanish? I'd appreciate any help in understanding this.

like image 286
Alex Mcp Avatar asked Aug 24 '09 03:08

Alex Mcp


2 Answers

The answer is yes, and the output is mailed to the account that is running the cron task. You can change this in the crontab file by setting a "MAILTO=accountname" option, like this example cron file:

MAILTO=root

# run a script every hour
01 * * * * root run-parts /etc/cron.hourly
#etc.

Any output from the above cron task would be mailed to the root user. As Mike B posted, you can also simply redirect the output elsewhere on the task line using the > operator:

01 * * * * php testscript.php > /var/log/logfile.log

in which case cron does not see it and does not send an email.

The bottom line is that if you leave some echo statements in a PHP script and set it as a cron job, then you will start getting emails from the cron daemon.

like image 56
zombat Avatar answered Oct 31 '22 19:10

zombat


Yes they are outputted but to noone in particular (See zombat's answer, it's mailed to the owner of the crontask). You can write the output of your script to a file via:

php myscript.php > /var/log/cronlog.log

(Assuming you're using linux since you said cron and not scheduled task)

like image 44
Mike B Avatar answered Oct 31 '22 19:10

Mike B