PHP和Cron作业

PHP和Cron作业,php,cron,Php,Cron,可能重复: php中是否有cronjob的条件标记?我想做的是: if(cron_job_executing_this_php_file) { do something } elseif($_SERVER['REMOTE_ADDR'] = "blah.bl.ah.bl") { do something } 我可以这样做吗?你可以用。它应该从命令行返回一个不同的值,包括但不限于cron,而不是从CGI或mod_php返回的值。您只需在crontab中为php调用添加一个arg: 0 1 0 0

可能重复:

php中是否有cronjob的条件标记?我想做的是:

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

我可以这样做吗?

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

您只需在crontab中为php调用添加一个arg:

0 1 0 0 0 php myscript.php from_cron
然后在脚本中对其进行测试:

   foreach($argv as $value)
   {
      echo "$value\n";
   }
这比依赖$SERVER super global更安全。

是的

如果您输入以下内容:

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

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

差不多

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

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

如果$argv[1]==fromcron


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

为什么不为您的cron作业创建一个单独的php文件呢?如果您的crontab能够发送$\u GET变量0 3***sudo/usr/local/bin/myfile.php?cron=true似乎与我认为您应该撤销您的注释,如果设置了REQUEST\u方法,则可以执行非shell操作。