我正在寻找一种使用PHP的方法,以检测脚本是从外壳上的手动调用运行的(我登录并运行该脚本),还是从crontab条目运行。
我有各种用php编写的维护类型脚本,这些脚本已设置为在crontab中运行。有时,我需要提前手动运行它们,或者如果发生故障/损坏,则需要运行几次。
这样做的问题是,每次手动运行脚本时,我也不想发生某些任务(发布到Twitter,发送电子邮件等)时需要设置的外部通知。
我正在使用php5(如果需要的话),它是一个相当标准的linux服务器环境。
有任何想法吗?
与其检测何时从crontab运行脚本,不如检测何时手动运行脚本。
从命令行运行脚本时,会设置许多环境变量(在$ _ENV数组中)。这些内容会有所不同,具体取决于您的服务器设置和登录方式。在我的环境中,在手动运行脚本时会设置以下环境变量,而从cron运行时不会设置这些环境变量:
也有其他人。因此,例如,如果您始终使用SSH来访问该框,则以下行将检测脚本是否从cron运行:
$cron = !isset($_ENV['SSH_CLIENT']);