我添加了以下命令crontab -e
:
15 * * * * php /home/rizwan/PHP-workspace/mgstore/testcron.php
我需要testcron.php
每 15 分钟运行一次;出于测试目的,我使用了以下 PHP 代码testcron.php
:
<?php
echo "test";
答案1
15 * * * * /usr/bin/php /home/rizwan/PHP-workspace/mgstore/testcron.php >> /home/rizwan/cron.out
这是有效的。但是我有一个 php 脚本,用于将客户从 magento 添加到 ERP,当我手动运行脚本时,它会要求授权,接受授权后,它会从 magento 将客户创建到 ERP 中,我需要每当我在 magento 中添加客户后 5 或 10 分钟,这个脚本就应该运行并将客户添加到 ERP。如何做到这一点?如果有人有任何想法,请帮忙?
答案2
首先,您必须确保通过完整路径运行可执行文件。您可以使用which
命令获取路径
$ which php
/usr/bin/php
现在 crontab 中的条目必须是:
15 * * * * /usr/bin/php /home/rizwan/PHP-workspace/mgstore/testcron.php
现在要检查输出,您可以使用重定向技巧,因此将输出重定向到某个文件,然后您可以检查该文件以查看结果。因此条目将是:
15 * * * * /usr/bin/php /home/rizwan/PHP-workspace/mgstore/testcron.php >> /home/rizwan/cron.out
现在您可以检查主目录中名为的文件cron.out
并查看您的 cron 是否运行。
答案3
在 PHP 中,您可以使用反引号运算符或shell_exec()
函数在系统的默认 shell 中运行命令;您可以运行pgrep 'php /home/rizwan/PHP-workspace/mgstore/testcron.php'
并评估其返回代码;要么这样:
<?php
if(!($PID = `pgrep 'php /home/rizwan/PHP-workspace/mgstore/testcron.php'`))
echo 'Process is running with PID ' . $PID . '.';
?>
或这个:
<?php
if(!($PID = shell_exec("pgrep 'php /home/rizwan/PHP-workspace/mgstore/testcron.php'")))
echo 'Process is running with PID ' . $PID . '.';
?>