2010-06-18 37 views
6

早上所有,通过cron运行php脚本,我怎样才能记录任何输出?

我有一个PHP脚本,我一直在测试,似乎运行良好,当我从命令行调用它。

我现在想通过cron自动化它,我怎样才能得到我已经把文件作为检查点放到日志文件中的输出?

如我在剧本的一些简单的echo命令,并希望我的输出出现一个现有的日志文件中(这样得到的自动旋转等)

感谢,

格雷格

+0

基于UNIX的cron会将作业的输出通过电子邮件发送给正在运行作业的ID的用户。所以如果你不想像其他答案中建议的那样混淆输出重定向,那么你可以看看那些自动邮件。 – 2010-06-18 17:18:34

回答

6

cron命令来运行:

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

'>>'附加到日志文件。 – 2010-06-18 12:45:22

+0

谢谢 - 如果我使用/ var/log/cron作为日志文件,那可以吗?这样它会自动存档,修剪等 – kitenski 2010-06-18 12:46:25

0

尝试这样:

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

这里的问题是,如果PHP脚本因任何原因失败,日志记录方法可能永远得不到执行。上面接受的答案将发送任何脚本输出到日志文件。 – 2017-04-24 13:19:33