如何编写PHP cron脚本?

时间:2014-10-02 05:57:56

标签: php cron

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

我写了这个应用程序来压缩文件并将文件从客户端的PC移动到主PC 它可以很好地用作网页。这几乎没有指导,没有规范文件 因为命运会有它,它应该是一个通过调用

运行的cron作业

*****runScript.php

所以我不知道将执行或将要执行的顺序。

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

有人可以指导我吗?

e.g。是否有一个将首先调用的MAIN方法。  如果是的话,那么我可以从那里引导脚本。

更新

答案真的很有帮助,但是php文件怎么会受到影响? @Ole Haugset 提到我应该调整它以便使用$_GET vars。例如,if ($_GET["argument"]=='runScript'){}已在脚本中完成此操作。

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

e.g。 * * * * * php /path/to/file/runScript.php runScript

3 个答案:

答案 0 :(得分:5)

将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文件中,以便我可以监视脚本事件。

尝试在shell中运行命令,然后将其放入cronjobs中以确保它正常工作。

但是,您说您通常使用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)

答案 1 :(得分: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) 

应该是这样:)

答案 2 :(得分:2)

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

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

这个命令,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 script文件呼叫php.ini

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

Click Here更多关于Cron PHP Script定义示例。