如果我回应一个声明并且没有人听到它,它是否会得到回应?(PHP cron工作问题)

Alex Mcp 14 php apache cron echo

所以我有一个脚本,我用一堆echo语句进行调试.这是由cron在我的服务器上每3分钟运行一次,我有时会将echo语句留在那里.他们不会去浏览器,他们只是去......任何地方?

我猜这是一个模糊的问题,但是当没有echo语句的最终用户或输出时会发生什么?它会占用内存吗?它只是消失了吗?理解这一点,我很感激.

zombat.. 10

答案是肯定的,输出邮寄到运行cron任务的帐户.您可以通过设置"MAILTO = accountname"选项在crontab文件中更改此选项,如此示例cron文件:

MAILTO=root

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

上述cron任务的任何输出都将邮寄给root用户.正如Mike B发布的那样,您还可以使用>运算符将输出重定向到任务行的其他位置:

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

在这种情况下,cron没有看到它,也没有发送电子邮件.

最重要的是,如果您echo在PHP脚本中保留一些语句并将其设置为cron作业,那么您将开始从cron守护程序获取电子邮件.

  • 如果您不想保留输出,可以重定向到`/ dev/null`.它仍然会打印出来,但会立即被丢弃,从而不会占用任何记忆. (3认同)
  • 所以我发现我在该服务器上使用了75%的磁盘空间配额,并查看并查看....并在maildir目录中找到了3个邮件.你去吧! (2认同)

Mike B.. 9

是的,他们是输出但特别是没有人(参见zombat的答案,它被邮寄给crontask的所有者).您可以通过以下方式将脚本的输出写入文件:

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

(假设您使用的是Linux,因为您说过cron而没有计划任务)