我每晚都在运行一个脚本,脚本的输出只会发送到一个邮件地址。但问题是我需要在自己的邮箱中收到输出的副本。我在脚本中注册了一个关闭处理程序,我尝试发送一个包含ob_get_contents等函数的邮件,这些函数实际上显示了数据。但只有我打印到终端的最后一件事。
cronMail('Cron', ob_get_contents());
调用的函数只是一个简单的函数,它添加默认的接收者和发送者并调用PHP Mail函数。
邮件中的输出是:
array()
终端有以下输出:
Starting cron...
Exiting...
array()
谁能告诉我如何接收整个输出?我使用ob_start方法启动了输出缓冲区。在每一行之后,我确保调用ob_flush方法,这样如果直接调用脚本,输出也将被发送到浏览器。
答案 0 :(得分:1)
ob_flush
阻挡你的方式,看到手册页上的链接描述,很清楚:它刷新缓冲区输出它。
你不想那样。删除对它的调用,你应该没事。
ob_start();
... your script without "ob_flush()" ...
$buffer = ob_get_clean(); # finally get the output buffer as string
echo $buffer; # pass output along for cron
cronMail('Cron', $buffer); # send your mail
此变体可确保您获得自己的电子邮件,但输出也会传递给cron。如果您在cronMail
函数中执行一些错误报告,这可能很有用,这样至少有一些方法可以进一步调试它。
另一种方法是注册一个输出处理函数,用于存储输出。但这不是那么简单,所以我坚持下去。