【问题标题】:How can I write a PHP cron script?如何编写 PHP cron 脚本?
【发布时间】:2016-11-18 21:07:38
【问题描述】:

如果这是一个愚蠢的问题,我很抱歉,但实际上我不知道。

我编写了这个应用程序来压缩文件并将其从客户的 PC 移动到主 PC。
它可以很好地用作网页。这是在没有指导和规范文档的情况下完成的。
所以命运会这样,它应该是一个通过调用

来运行的 cron 作业

*****runScript.php

所以我不知道执行将或应该按什么顺序进行。

我使用了 2 个 AJAX 调用来调用脚本中的方法,但只是将文件作为脚本运行有点不同。

有人可以指导我吗?

例如是否有一个将首先调用的 MAIN 方法。 如果是这样,那么我可以从那里指导脚本。

更新

答案确实很有帮助,但是 php 文件会受到怎样的影响呢? @Ole Haugset 提到我应该调整它,所以使用$_GET vars。例如,if ($_GET["argument"]=='runScript'){} 已经在脚本中完成了这项工作。

所以将runScript 附加到脚本调用应该可以正常工作吗?

例如* * * * * php /path/to/file/runScript.php runScript

【问题讨论】:

  • 你有root访问权限(shell)并且你的系统在linux上运行吗?
  • 我正在运行 Windows,但脚本将部署在运行 Linux 的机器上。是的,将提供 root 访问权限。
  • @AvinashBabu。这是一个非常有用的文档,谢谢。

标签: php cron


【解决方案1】:

将 PHP 脚本作为 cron 作业运行没有问题。 您需要做的是提供文件系统中脚本文件的完整路径,并使用命令php 告诉 Linux 运行该文件的程序。

例子:

*/5 * * * * php /var/www/vhosts/statistikk/cron/getLastArticleFromIntranet.cron.php >> /var/www/vhosts/statistikk/cron/LOG.txt 2> /dev/null

该脚本将在一周中的所有日子每 5 分钟运行一次。无论 PHP 脚本回显/打印出什么,都将存储到 LOG.txt 文件中,以便我可以监控脚本事件。

在将命令放入 cronjobs 之前,尝试在 shell 中只运行命令,以确保它可以正常工作。

但是,您说您通常使用 AJAX 调用来调用此脚本。这对于 cronjob 是不可能的。我假设您使用 AJAX 传递脚本需要的一些 $_POST 元素。因此,您要做的就是调整脚本以允许 $argv 参数,并将它们添加到 crontab 作业中,或者简单地制作一个在运行之前不需要任何给定参数的脚本。

如果您要调整脚本以支持 $argv 参数,请按照 Stack Overflow 上已经存在的关于向作业添加参数的答案:

How to run a php url with parameters in cron tab

编辑:

我只想从下面的答案中添加到我的答案中。 要在 Linux 中编辑 crontab 作业,您只需使用命令 crontab -e

这是每个需要填写的参数的描述。

*     *     *   *    *        command to be executed
-     -     -   -    -
|     |     |   |    |
|     |     |   |    +----- day of week (0 - 6) (Sunday=0)
|     |     |   +------- month (1 - 12)
|     |     +--------- day of        month (1 - 31)
|     +----------- hour (0 - 23)
+------------- min (0 - 59)

【讨论】:

  • 感谢您的帮助。想我现在可能对如何做有一个想法。希望我不会回来。
【解决方案2】:

要在 linux 中添加 cronjob,请执行以下操作:

# crontab -e 如果 vi 是您的编辑器,请按 i 输入文本并按 esc 退出。使用 :w 保存更改,使用 :q 退出。 如果 nano 是您选择的编辑器,则使用 strg+o 保存并使用 str+x 关闭。

无论如何,将这一行添加到文件的 bodom 中:*/5 * * * * php runScript.php

每 5 分钟调用一次。

* * * * * php /path/to/file/runScript.php
┬ ┬ ┬ ┬ ┬
│ │ │ │ │
│ │ │ │ └──── Day of the week (0-7, Sunday is 0 or 7)
│ │ │ └────── Month (1-12)
│ │ └──────── Day (1-31)
│ └────────── Hour (0-23)
└──────────── Minute (0-59) 

应该是这样的:)

【讨论】:

    【解决方案3】:

    从 cron 作业运行 PHP 脚本的常用方法是使用命令行程序,例如 curl 或 wget。例如,cron 作业运行类似于以下命令的命令:

    curl http://*****.com/script.php
    

    n 这个命令,curl 检索网页,然后运行 ​​PHP 脚本。

    但是,有一种更好的方法可以通过 cron 作业在您的网站上运行 PHP 脚本。您可以使用 PHP 命令行解释器直接运行脚本。这种方法同样有效,而且通常更快。以下命令显示了如何使用 PHP 命令行解释器运行脚本:

    /usr/local/bin/php -q /home/username/public_html/script.php
    

    在本例中,PHP 命令行解释器运行 script.php 文件。 -q 选项启用安静模式,防止显示 HTTP 标头。

    根据您的 PHP 脚本中的代码,它可能只有在从特定目录调用时才能正确运行。例如,如果脚本使用相对路径来包含文件,则只有从正确的目录调用它才会运行。以下命令显示了如何从特定目录调用 PHP 脚本:

    cd /home/username/public_html/; /usr/local/bin/php -q script.php
    

    如果您的脚本需要特殊的配置选项,您可以使用自定义的php.ini 文件。 -c 选项允许您使用自定义 php.ini 文件调用 PHP script

    /usr/local/bin/php -c /home/username/php.ini /home/username/public_html/script.php
    

    Click Here to More About Cron PHP Script 用示例定义。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-25
      • 2019-06-05
      • 2013-09-08
      • 1970-01-01
      • 2018-03-22
      • 1970-01-01
      • 1970-01-01
      • 2017-08-25
      相关资源
      最近更新 更多