2011-03-30 42 views
1

我试图设置一个cronjob,每20分钟运行一次。 文件路径是/srv/www/mysite.co.uk/public_html/PP/Make_Xml.php如何在Debian下创建一个php cronjob

,但我需要这样基本上转移给它的变种来的cron: /srv/www/mysite.co .UK /的public_html/PP/Make_Xml.php DB =伦敦

我试图用 “crontab -e命令”,并将其设置甚至每分钟:

* * * * * /srv/www/mysite.co.uk/public_html/PP/Make_Xml.php?db=LONDON 

它,它保存到/ tmp/crontab.something/crontab

而且它似乎没有工作。 我是Linux新手请帮忙。

+0

一开始你需要添加php,无论是php <路径到文件>或完整的php路径取决于配置 – 2011-03-30 20:40:21

+0

添加MAILTO =“”在你的地址的crontab文件的顶部,它会通过电子邮件发送你的if有一个问题,伟大的测试 – 2011-03-30 20:42:26

回答

4

首先,调用命令行PHP脚本的时候,你会不会它传递参数,你在这里做的方式。

通常您会通过那些像这样:

/srv/www/mysite.co.uk/public_html/PP/Make_Xml.php db=LONDON 

而且,从你的PHP脚本,你不会在数据进入$_GET,但进入$_SERVER['argv']


例如,如果我创建一个包含以下内容的脚本:

<?php 
var_dump($_SERVER['argv']); 

调用这样说:

php temp.php db=LONDON 

会让我下面的输出:

array(2) { 
    [0]=> 
    string(8) "temp.php" 
    [1]=> 
    string(9) "db=LONDON" 
} 


然后,请注意你应该呼叫php可执行程序,从你的crontab,而不是直接PHP脚本 - 除非你让它可执行。

这可能意味着使用这样的事:

* * * * * /usr/bin/php /srv/www/mysite.co.uk/public_html/PP/Make_Xml.php db=LONDON 

注意:您可能需要的路径适应php

+0

帕斯卡非常明确,谢谢你 – Tom 2011-03-30 20:48:49

0

请参阅Pascals响应re:变量。

对于要每隔20分钟:

*/20 * * * * /usr/bin/php /srv/www/mysite.co.uk/public_html/PP/Make_Xml.php db=LONDON 

它说运行脚本每当分钟整除20。

0

有两个额外的选项,你可以考虑。

对于您打算从命令行使用的PHP脚本,可以使用PEAR Console_Getopt命令行选项解析器,该解析器提供了类似的功能来为其他语言的getopt库。

如果您的PHP脚本需要在Web上下文中运行,您可以使用cron作业来请求该URL。 A stackoverflow question and answer涵盖了这一点。