调用PHP script from does echo会导致错误


Calling PHP script from does echo cause errors?

我有一个PHP脚本,我用它来执行维护任务的网站。我使用cron每X小时执行一次,但我也想把它作为一个选项,如果网站管理员想手动运行它。为了使它对管理友好,最后它应该通过回显各种消息在浏览器中显示结果。

问题是,如果脚本在cron中运行时回显结果或会导致错误,这是否重要?它应该只在管理员执行时输出到浏览器吗?有没有一种方法来告诉一个脚本何时在浏览器中执行,何时从cron?

谢谢。

cron脚本的输出通常邮寄给服务器管理员。由于这可能很烦人,所以如果没有发生错误,通常不希望有任何输出。

您可以php_sapi_name()检查使用了哪种类型的接口("cli"用于cron作业)。

参见php文档。

由于其他答案建议将输出重定向到/dev/null,因此您应该记住,您将无法知道是否发生了任何错误。你的cronjob可能会停止工作,你不会知道很长一段时间…

如果cron作业在stderr或stdout上有任何输出,那么cron将把该输出以电子邮件的形式发送给cron作业用户,或者发送给cron文件中最后设置的MAILTO变量中给出的地址。

您通常应该编写cron作业/脚本,以便它不产生输出,除非有问题。这是狼来了。如果你的cron工作总是很吵,你就不会在需要的时候注意了。

所以,有几种可能的方法,当从命令行运行时仍然提供信息输出:

  1. 您可以将信息错误消息写入标准输出,并为真正需要注意的事情保留标准错误。然后可以将cron作业规范管道输出到/dev/null

  2. 可以使用命令行选项打开或关闭输出。如——verbose或——quiet

可以测试终端的存在,但我认为您最好使用上述方法之一。

不会有问题的。

echo命令将使用php的标准输出。如果您在控制台中执行php脚本,echo将在控制台中打印其结果。

我相信crontab的标准输出可能取决于它的unix发行版。

查看does echo = fputs(STDout)?这个问题有一些有价值的信息。