我需要确定是否通过代码中的cron或命令行加载PHP文件。我怎么能这样做?
答案 0 :(得分:16)
如果您可以控制cron或命令,是否考虑过传递命令行参数,并使用$_SERVER['argv'][0]
读取它?
* * * * * /usr/bin/php /path/to/script --cron
在剧本中:
<?php
if(isset($_SERVER['argv'][0]) and $_SERVER['argv'][0] == '--cron')
$I_AM_CRON = true;
else
$I_AM_CRON = false;
答案 1 :(得分:6)
检查脚本运行位置的最可靠和详尽的方法是
然而,这里列出的这个或任何其他列出的方法都不会让您区分“正常”CLI模式和cron调用。 gahooa的命令行参数思想可能是最好和最可靠的解决方案。
答案 2 :(得分:6)
这是一种简单的方法。仅在从HTTP调用时才设置$_SERVER
数组的某些元素。因此你可以:
if(!isset($_SERVER['REQUEST_METHOD'])){
// from cron or command line
}else{
// from HTTP
}
其他包括:$_SERVER['HTTP_HOST']
答案 3 :(得分:2)
您可以检查PHP_SAPI
常量以检查是否正在使用CLI解释器:
$is_cli= PHP_SAPI == 'cli';