【问题标题】:PHP and Cron job [duplicate]PHP和Cron作业[重复]
【发布时间】:2012-03-21 03:28:42
【问题描述】:

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

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

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

我可以这样做吗?

【问题讨论】:

标签: php cron


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    0 1 0 0 0 php myscript.php from_cron
    

    然后在脚本中对其进行测试:

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

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

    【讨论】:

      【解决方案3】:

      是的!

      如果你输入如下内容:

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

      【讨论】:

      • 如果设置了 REQUEST_METHOD,我认为你应该反转你的 cmets,做非 shell 的东西。
      【解决方案4】:

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

      类似

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

      那你的script.php可以问:

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

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

      【讨论】:

        猜你喜欢
        • 2015-01-11
        • 2016-12-06
        • 2011-07-25
        • 1970-01-01
        • 2023-03-22
        • 1970-01-01
        • 2013-07-18
        • 2016-04-05
        • 2013-04-28
        相关资源
        最近更新 更多