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