【问题标题】:how to set cron job from php script?如何从 php 脚本设置 cron 作业?
【发布时间】:2017-07-05 21:01:33
【问题描述】:

我是 cron 工作的新手。我学习了一些有关 cron 作业的基础知识。我可以使用 cron 选项卡调用 php。通过在 /etc/crontab 中使用以下命令

  10 *    * * *   root    /usr/bin/php /var/www/PATH TO SCRIPT/email.php 

在 email.php 我有以下代码

 #!/usr/bin/php
 <?php
    mail ("examplemail@mail.com", "Cron Successful Public HTML!","Hello World from mycron.php!");
 ?>

我每 10 分钟收到一次邮件。 但我需要知道有什么方法可以从 php 调用 cron 作业(从 php 调用 cron) 我通过冲浪获得了一些想法,但我无法找出完成工作的确切方法。 这是我用来使用 php 添加作业的代码

   exec('echo -e "crontab -e \n2 * * * * /usr/bin/php /var/www/PATH TO THE SCRIPT/crontest1.php" ');

它不适合我。谁能指导我如何从php调用或添加cron。所以我可以通过执行 php 文件来发送邮件,并且可以更改 php 文件本身的时间间隔。

【问题讨论】:

    标签: php cron crontab


    【解决方案1】:

    来自How can I set cron job through PHP scriptNick Clark

    这将添加一个每天上午 9:30 运行的脚本。

    exec('echo -e "`crontab -l`\n30 9 * * * /path/to/script" | crontab -');
    

    如果您从 Web 服务器运行此脚本,您可能会遇到权限问题。为了解决这个问题,我建议采用不同的方法。

    这是一种可能的解决方案。创建需要运行的脚本列表。您可以将其保存在文本文件或数据库中。创建一个脚本来读取此列表并每分钟或每 5 分钟运行一次(使用 cronjob)。您的脚本需要足够聪明,才能决定何时运行脚本列表以及何时退出。

    你可以这样做..

    其他链接:

    Install a cron job with a php script

    How to invoke cron job from php script?

    【讨论】:

    • 我试过了,我只是想知道在这之后我必须在浏览器中运行我的 php 文件吗?我真的不知道该 cron 将如何执行。可以解释一下吗:(
    【解决方案2】:

    应该可以直接添加

    echo "2 * * * * /usr/bin/php /var/www/PATH TO THE SCRIPT/crontest1.php\n" > /etc/cron.d/username
    

    【讨论】:

    • OP 专门询问了如何从 PHP 中执行此操作。
    • @MichaelMior 在它周围加上exec()...当我看到这个问题时,他似乎明白了。
    【解决方案3】:

    许多环境不允许从 web 调用的 php 页面写入文本文件。我同意这是一种不应承担的安全风险。

    我有一个网页通过对 php 脚本的 JQuery 调用将数据保存到 MySQL 表中。在 Cron 中,我安排另一个 php 脚本每隔一段时间检查 MySQL 表中的数据并执行任何必要的作业。

    【讨论】: