我正在寻找PHP的方法来检测脚本是从shell上的手动调用(我登录并运行它)运行的,还是从crontab条目运行的。
我已经在我的crontab中设置了用php编写的各种维护类型的脚本。偶尔,我需要提前手动运行它们,或者如果某些东西失败/损坏,我需要运行它们几次。
这样做的问题是,我也有一些外部通知设置到任务(发布到twitter,发送电子邮件,等等),我不希望每次我手动运行脚本时发生。
我使用的是php5 (如果重要的话),它是一个相当标准的linux服务器环境。
有什么想法吗?
发布于 2012-03-19 13:46:58
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";
}
发布于 2008-10-10 10:47:29
您可以设置一个额外的参数,或者在crontab中添加一行,例如:
CRON=running
然后你可以检查你的环境变量中是否有"CRON“。另外,尝试检查$SHELL变量,我不确定是否/什么cron将其设置为。
发布于 2010-03-12 06:15:59
正确的方法是对标准输出文件描述符使用posix_isatty()函数,如下所示:
if (posix_isatty(STDOUT))
/* do interactive terminal stuff here */
https://stackoverflow.com/questions/190759
复制相似问题