首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >PHP能检测到它是从cron作业还是从命令行运行吗?

PHP能检测到它是从cron作业还是从命令行运行吗?
EN

Stack Overflow用户
提问于 2008-10-10 10:37:46
回答 19查看 42.1K关注 0票数 63

我正在寻找PHP的方法来检测脚本是从shell上的手动调用(我登录并运行它)运行的,还是从crontab条目运行的。

我已经在我的crontab中设置了用php编写的各种维护类型的脚本。偶尔,我需要提前手动运行它们,或者如果某些东西失败/损坏,我需要运行它们几次。

这样做的问题是,我也有一些外部通知设置到任务(发布到twitter,发送电子邮件,等等),我不希望每次我手动运行脚本时发生。

我使用的是php5 (如果重要的话),它是一个相当标准的linux服务器环境。

有什么想法吗?

EN

回答 19

Stack Overflow用户

发布于 2012-03-19 13:46:58

代码语言:javascript
复制
if (php_sapi_name() == 'cli') {   
   if (isset($_SERVER['TERM'])) {   
      echo "The script was run from a manual invocation on a shell";   
   } else {   
      echo "The script was run from the crontab entry";   
   }   
} else { 
   echo "The script was run from a webserver, or something else";   
}
票数 42
EN

Stack Overflow用户

发布于 2008-10-10 10:47:29

您可以设置一个额外的参数,或者在crontab中添加一行,例如:

代码语言:javascript
复制
CRON=running

然后你可以检查你的环境变量中是否有"CRON“。另外,尝试检查$SHELL变量,我不确定是否/什么cron将其设置为。

票数 30
EN

Stack Overflow用户

发布于 2010-03-12 06:15:59

正确的方法是对标准输出文件描述符使用posix_isatty()函数,如下所示:

代码语言:javascript
复制
if (posix_isatty(STDOUT))
    /* do interactive terminal stuff here */
票数 17
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/190759

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档