如果脚本从crontab的Apache运行,我如何在PHP中找到?

时间:2014-01-23 11:05:39

标签: php apache

我有一个PHP脚本,可以从crontab作业列表和Apache运行(通过将其Web地址实现到Web浏览器中)。 在这些情况下,脚本的行为应该是不同的。 我怎样才能知道脚本的运行方式?

1 个答案:

答案 0 :(得分:1)

您可以使用函数php_sapi_name()来检测脚本正在运行的SAPI。

像这样:

if(in_array(php_sapi_name(), array(
    'apache',
    'apache2filter',
    'apache2handler'
))) {
    echo "we are running on apache";
} else {
    echo "we are not running on apache";
}

但是,脚本不是由apache运行的事实并不一定意味着脚本是由cron运行的。您也可以通过命令行手动启动它。最安全的方法是从cron传递一个参数:

* * * * * user_name php /path/to/your.php cron

然后在脚本中你可以检查:

if(isset($argv[1]) && $argv[1] === 'cron') {
    echo "we are running as a cron job";
}