【问题标题】:PHP: determining from where a script was launchedPHP:确定从哪里启动脚本
【发布时间】:2015-05-20 08:39:29
【问题描述】:

我有一个脚本,它可以通过 cron、HTTP 请求(浏览器)或其他脚本启动。如何确定脚本的启动位置?

【问题讨论】:

  • 我想你可以在这篇帖子stackoverflow.com/questions/1854297/…找到解决方案
  • 也看看这个函数php_sapi_name()。它包含 sapi 处理程序名称。因此,如果您通过 CLI 运行脚本,此函数将返回 cli。如果你从一个 fast-cgi 实例运行它,你会得到 cgi-fcgi 等等。

标签: php


【解决方案1】:

您可以查看几条信息以找出答案:

常量PHP_SAPI 将告诉您正在运行哪个 PHP 解释器/接口 - 常见 SAPI 的名称记录在 php_sapi_name 页面上

对于命令行脚本,您应该能够结合使用posix_isatty 函数和检查$_SERVER['TERM'] 的存在来实现您想要的效果

【讨论】:

    【解决方案2】:

    解决此问题的最简单方法是将参数传递给脚本。这将使您能够高度控制信息的格式,并且它是(相当)安全的。

    【讨论】:

      【解决方案3】:

      不确定,这是你想要的..

      Cron:

      php -q /dir/my_script.php cron
      

      HTTP:

      http://dir/my_script.php?arg=web
      

      PHP:

      if (!empty($argv[0])) 
      {
          echo "local";
      } 
      elseif(isset($_GET['arg']))
      {
          echo "web";
      }
      else
      {
          echo "Others"
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-08-06
        • 2021-12-30
        • 2013-12-06
        • 1970-01-01
        • 1970-01-01
        • 2020-06-22
        相关资源
        最近更新 更多