PHP和Cron的工作

时间:2012-03-02 16:06:44

标签: php cron

  

可能重复:
  What is the canonical way to determine commandline vs. http execution of a PHP script?

在cronjob的php中是否有一些“条件”标签?我想做什么:

if(cron_job_executing_this_php_file)
{
do something
}
elseif($_SERVER['REMOTE_ADDR'] = "blah.bl.ah.bl")
{
do something
}

我可以这样做吗?

4 个答案:

答案 0 :(得分:2)

您可以使用php_sapi_name()。它应该从命令行返回一个不同的值(包括但不限于cron),而不是CGI或mod_php。

答案 1 :(得分:2)

你可以在crontab中为你的PHP调用添加一个arg:

0 1 0 0 0 php myscript.php from_cron

然后在脚本中测试它:

   foreach($argv as $value)
   {
      echo "$value\n";
   }

比依赖$ SERVER超级全局更安全。

答案 2 :(得分:2)

是的!

如果你输入如下内容:

if (isset($_SERVER['REQUEST_METHOD'])) {
    // Do non-shell stuff here
} else {
   // Do shell stuff here
}

答案 3 :(得分:2)

您可以将参数从cron传递到php脚本。

这样的东西

01 04 1 1 1 /path/to/my/script.php "fromcron"

然后您的script.php可以询问:

if($argv[1]=="fromcron")

你可能有一些索引错误,所以不要求$ argv [1],除非你知道它将在索引[1]中有一个元素。