php每1分钟执行一次crontab脚本

时间:2016-07-18 14:49:54

标签: php cron crontab

作为php-slim Web应用程序的一部分,在我的init.php文件中,我需要一个包含以下代码的Crontab.php:

<?php

// clears any existing crontab jobs first
exec("crontab -r");

$ctCommand = '"*/1 * * * * php ./ProcessCycleTimeData.php"';
exec("(crontab -l 2>/dev/null; echo " . $ctCommand . " ) | crontab -");

exec("crontab -l");
?>

当我手动运行命令时,作业会被添加,我可以看到它被记录,但它似乎没有运行。但是,当我运行php ./ProcessCycleTimeData.php时,它运行正常。有什么想法解决这个问题吗?

我正在查看错误日志,每分钟都会收到以下日志:

crontab: no crontab for daemon

2 个答案:

答案 0 :(得分:2)

您可以使用crontab -e编辑crontab,这将打开默认编辑器(如果未设置其他编辑器,则通常为vi。)

为需要运行此脚本的用户编辑crontab,并添加一行:

*/1 * * * * php ./ProcessCycleTimeData.php

这意味着

  

每一分钟

  • 注意: 您提供的PHP代码段正在尝试编辑crontab并添加上面的行。但是由于缺乏许可,它可能会失败。

答案 1 :(得分:2)

我设法让它发挥作用。我的解决方案是通过附加>>/tmp/auto-update.log 2>&1的crontab作业来检查crontab是否实际运行,这使我能够进一步调查此问题。

我发现crontab确实在运行,但作为一个不同的用户(因此当我手动调用crontab -e时,我无法看到该作业,因为我将其称为我自己的用户名。

crontab实际上也在调用我的PHP脚本,然后我可以找到auto-update.log中的错误,这些错误恰好是由于错误地说明了需求路径。