function get_client_ip()
{
$ipaddress = '';
if (getenv('HTTP_CLIENT_IP'))
$ipaddress = getenv('HTTP_CLIENT_IP');
else if(getenv('HTTP_X_FORWARDED_FOR'))
$ipaddress = getenv('HTTP_X_FORWARDED_FOR');
else if(getenv('HTTP_X_FORWARDED'))
$ipaddress = getenv('HTTP_X_FORWARDED');
else if(getenv('HTTP_FORWARDED_FOR'))
$ipaddress = getenv('HTTP_FORWARDED_FOR');
else if(getenv('HTTP_FORWARDED'))
$ipaddress = getenv('HTTP_FORWARDED');
else if(getenv('REMOTE_ADDR'))
$ipaddress = getenv('REMOTE_ADDR');
else
$ipaddress = 'UNKNOWN';
return $ipaddress;
}
Я использую файл для запоминания последнего значения таких параметров, например:
.PHONY: force
compiler_flags: force
echo '$(CC_FLAGS)' | cmp -s - $@ || echo '$(CC_FLAGS)' > $@
Бит cmp || echo
означает, что файл compiler_flags
касается только изменения настроек, так что теперь вы может написать что-то вроде
$(OBJECTS): compiler_flags
, чтобы вызывать пересборку $(OBJECTS)
всякий раз, когда изменяются флаги компилятора. Правило для compiler_flags будет выполняться каждый раз, когда вы запускаете make, но пересборка $(OBJECTS)
будет запускаться, только если файл compiler_flags
был фактически изменен.
поместите их в цель, затем вызовите touch для каждого файла.