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

php execute crontab script every 1 minute

作为 php-slim 网络应用程序的一部分,在我的 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

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

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

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

这意味着

Every one minute

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

我设法让它工作了。我的解决方案是通过将 >>/tmp/auto-update.log 2>&1 附加到 crontab 作业来检查 crontab 是否实际上是 运行,这让我可以进一步调查该问题。

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

crontab 实际上也在调用我的 PHP 脚本,然后我可以在其中找出 auto-update.log 中的错误,这恰好是由于错误地陈述了需要的路径。