如何在Debian下制作php cronjob

Tom*_*Tom 1 php linux cron debian

我正在尝试将 cronjob 设置为每 20 分钟运行一次。文件路径为/srv/www/mysite.co.uk/public_html/PP/Make_Xml.php

但我需要向它转移一个 var 所以基本上到 cron:/srv/www/mysite.co.uk/public_html/PP/Make_Xml.php?db=LONDON

我尝试使用“crontab -e”并将其设置为每分钟:

 * * * * * /srv/www/mysite.co.uk/public_html/PP/Make_Xml.php?db=LONDON
Run Code Online (Sandbox Code Playgroud)

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

它似乎不起作用。我是 linux 新手,请帮忙。

Pas*_*TIN 5

首先,当从命令行调用 PHP 脚本时,您不会像这里那样传递参数

你通常会通过这样的:

/srv/www/mysite.co.uk/public_html/PP/Make_Xml.php db=LONDON
Run Code Online (Sandbox Code Playgroud)

而且,从您的 PHP 脚本中,您不会将数据放入$_GET,而是放入$_SERVER['argv']


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

<?php
var_dump($_SERVER['argv']);
Run Code Online (Sandbox Code Playgroud)

这样称呼它:

php temp.php db=LONDON
Run Code Online (Sandbox Code Playgroud)

会给我以下输出:

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


然后,请注意,您可能应该从 crontab调用php可执行程序,而不是直接调用PHP 脚本——除非您使其可执行。

这可能意味着使用这样的东西:

* * * * * /usr/bin/php /srv/www/mysite.co.uk/public_html/PP/Make_Xml.php db=LONDON
Run Code Online (Sandbox Code Playgroud)

注意:您可能需要将路径调整为php.