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
中的错误,这恰好是由于错误地陈述了需要的路径。
作为 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
中的错误,这恰好是由于错误地陈述了需要的路径。