如何确定是否通过cron /命令行加载了PHP文件

时间:2009-12-06 04:02:35

标签: php command-line cron

我需要确定是否通过代码中的cron或命令行加载PHP文件。我怎么能这样做?

4 个答案:

答案 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)

检查脚本运行位置的最可靠和详尽的方法是

php_sapi_name()

然而,这里列出的这个或任何其他列出的方法都不会让您区分“正常”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';