我现在正在做这样的事情:
if (empty($_SERVER['SERVER_NAME'])) {
// the script is run by a Cron job
} else {
// the script is run by a HTTP request
}
在某些情况下会出错吗?更具体地说,$ _SERVER ['SERVER_NAME']总是由Apache设置?我知道$ _SERVER中的一些变量如$ _SERVER ['REMOTE_ADDR']可能会受到客户端的污染。
有什么建议吗?
答案 0 :(得分:0)
尝试内置的php函数php_sapi_name
它返回Web服务器和PHP之间的接口类型
或者,您可以使用
__FILE__ with dirname(__FILE__) or
$_SERVER['SCRIPT_NAME']
标识当前正在执行的php脚本的路径名。
将其存储在变量中,并应用linux grep
命令验证它是否存在于cron位置/usr/etc/crontab
答案 1 :(得分:0)
制作两个单独的脚本将是我的第一个建议。
$ _SERVER ['SERVER_NAME']也取决于服务器设置,但应始终设置。
来自Apache Docs:
如果未指定ServerName,则服务器会尝试推断出 通过对IP地址执行反向查找来实现主机名。如果没有端口 在ServerName中指定,然后服务器将使用该端口 传入的请求。为了获得最佳的可靠性和可预测性, 应使用ServerName指定显式主机名和端口 指令。