Если модуль Apache установлен, вы получите код страны с:
$_SERVER['GEOIP_COUNTRY_CODE']
С PHP модуль / библиотека, ты используешь :
geoip_country_code_by_name($_SERVER['REMOTE_ADDR'])
В чем разница (производительность и т. Д.) Между этими двумя решениями?
Какой из них лучше ? Для чего нужно?
Я думаю, что модуль apache загружает расширение в память для каждого запроса, что может отрицательно сказаться на производительности. (Или вы должны установить правила с GeoIPEnable Off/On
но это не всегда легко …)
Так что если вам нужен geoip только на некоторых страницах, лучше ли для производительности использовать модуль PHP?
Они примерно эквивалентны по производительности. Нам также было любопытно, поэтому мы провели некоторое тестирование как на виртуальных машинах Digital Ocean, так и локально с помощью vagrant. Результаты были одинаковыми: использование Apache Extension, PHP Extension или PHP Library — все это дало фантастические результаты. Никакого реального удара против того, чтобы вообще не делать GeoIP.
Вы можете отключить GeoIP в Apache на основе каталогов или файлов, используя .Htaccess, так что если вы хотите отключить его для некоторых областей, вы также можете сделать это там.
Мы написали в блоге о наших тестах, с подробностями о том, как воспроизвести: GeoIP Performance Examined
Других решений пока нет …