通过cron运行php脚本,如何记录任何输出?

7
早上好,
我有一个PHP脚本,经过测试,在命令行中调用时似乎运行良好。
现在我想通过cron自动化它,如何将我放置在文件中的输出作为检查点放入日志文件中呢?
例如,我在脚本中有一些简单的echo命令,我希望输出出现在现有的日志文件中(这样它就可以自动轮换等)。
谢谢,
Greg

基于UNIX的cron将作业的输出发送到以该作业运行的用户ID为标识的用户的电子邮件中。因此,如果您不想像其他答案建议的那样处理输出重定向,您可以查看这些自动电子邮件。 - Marc B
2个回答

13

要运行的Cron命令:

/path/to/php -f /path/to/script.php >> /path/to/logfile.txt

1
>> 用于将内容追加到日志文件中。 - Annika Backstrom
谢谢 - 如果我使用/var/log/cron作为日志文件,可以吗?这样它就会自动归档、修剪等。 - kitenski

1
尝试像这样做:

<?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);
}
?>

1
这里的问题是,如果 PHP 脚本由于任何原因失败,日志记录方法可能永远不会被执行。上面接受的答案将发送任何脚本输出到日志文件中。 - John Vargo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接