2014-10-02 70 views
1

对不起,如果这是一个愚蠢的问题,但实际上我不知道。如何编写PHP cron脚本?

我写这个应用程序来压缩和移动文件从客户端的PC到主PC。
它可以很好地用作网页。这是没有什么指导,没有规格文件。
因此,作为命运的安排,它应该是这将通过调用

*****runScript.php

所以我不知道以何种顺序执行将要或应该发生运行cron作业。

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

任何人都可以请指导我吗?

例如有没有一种主要的方法将被首先调用。 如果是这样,那么我可以从那里引导脚本。

修订

的答案是真正的帮助充分,但如何将PHP文件会受到影响? @ Ole Haugset提到我应该适应它,所以使用$_GET变量。这在例如if ($_GET["argument"]=='runScript'){}的脚本中已经完成。

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

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

+0

你有root权限(shell),并且你的系统是在linux上运行的吗? – ThatMSG 2014-10-02 06:02:23

+0

即时通讯运行Windows,但脚本将部署在Linux的机器上。是的,根访问将可用。 – morne 2014-10-02 06:04:23

+1

http://www.cyberciti.biz/faq/how-do-i-add-jobs-to-cron-under-linux-or-unix-oses/ – 2014-10-02 06:59:42

回答

4

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

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

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

如果你要调整你的脚本支持参数,请在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) 
+0

感谢您的帮助。想想我现在可能有一个想法如何做到这一点。希望我不会回来。 – morne 2014-10-02 07:04:33

2

在Linux添加一个cronjob做到这一点:

#crontab -e命令 如果VI是你的编辑器按我输入文字和ESC键退出。使用:w保存您的更改并:q退出。 如果nano是您选择的编辑器,则使用strg + o进行保存,str + x进行关闭。

反正此行添加到文件的死神:*/5 * * * * PHP runScript.php

它将被称为每隔5min。

* * * * * 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

用于从定时任务运行PHP脚本的常用方法是使用一个命令行程序,例如卷曲或wget的。例如,cron作业运行类似如下的命令:

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

n这个命令,卷曲检索网页,然后运行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更了解Cron PHP Script与实例定义。