早上所有,通过cron运行php脚本,我怎样才能记录任何输出?
我有一个PHP脚本,我一直在测试,似乎运行良好,当我从命令行调用它。
我现在想通过cron自动化它,我怎样才能得到我已经把文件作为检查点放到日志文件中的输出?
如我在剧本的一些简单的echo命令,并希望我的输出出现一个现有的日志文件中(这样得到的自动旋转等)
感谢,
格雷格
早上所有,通过cron运行php脚本,我怎样才能记录任何输出?
我有一个PHP脚本,我一直在测试,似乎运行良好,当我从命令行调用它。
我现在想通过cron自动化它,我怎样才能得到我已经把文件作为检查点放到日志文件中的输出?
如我在剧本的一些简单的echo命令,并希望我的输出出现一个现有的日志文件中(这样得到的自动旋转等)
感谢,
格雷格
cron命令来运行:
/path/to/php -f /path/to/script.php >> /path/to/logfile.txt
'>>'附加到日志文件。 – 2010-06-18 12:45:22
谢谢 - 如果我使用/ var/log/cron作为日志文件,那可以吗?这样它会自动存档,修剪等 – kitenski 2010-06-18 12:46:25
尝试这样:
<?php
function logToFile($filename, $msg)
{
$fd = fopen($filename, "a");
$str = "[" . date("Y/m/d h:i:s", mktime()) . "] " . $msg;
fwrite($fd, $str . "\n");
fclose($fd);
}
function logToMail($msg, $address)
{
$str = "[" . date("Y/m/d h:i:s", mktime()) . "] " . $msg;
mail($address, "Log message", $str);
}
function logToDB($msg, $type)
{
// open connection to database
$connection = mysql_connect("localhost", "joe", "pass") or die ("Unable to connect!");
mysql_select_db("logdb") or die ("Unable to select database!");
// formulate and execute query
$query = "INSERT INTO log (date, type, msg) VALUES(NOW(), '$type', '$msg')";
mysql_query($query) or die ("Error in query: $query. " .mysql_error());
// close connection
mysql_close($connection);
}
?>
这里的问题是,如果PHP脚本因任何原因失败,日志记录方法可能永远得不到执行。上面接受的答案将发送任何脚本输出到日志文件。 – 2017-04-24 13:19:33
基于UNIX的cron会将作业的输出通过电子邮件发送给正在运行作业的ID的用户。所以如果你不想像其他答案中建议的那样混淆输出重定向,那么你可以看看那些自动邮件。 – 2010-06-18 17:18:34