Для моей системы я хотел бы сделать определение местоположения маленькой страны. Итак, я нашел эту базу данных:
https://github.com/datasets/geoip2
Есть такие значения, как:
network,geoname_id,continent_code,continent_name,country_iso_code,country_name,is_anonymous_proxy,is_satellite_provider
"41.74.160.0/20","49518","AF","Africa","RW","Rwanda","0","0""41.77.160.0/22","49518","AF","Africa","RW","Rwanda","0","0"
Если я получу IP-адрес, как 42.76.160.0
из моей функции ip getenv как я могу найти этот ip с php & pdo, чтобы соответствовать правильное значение из базы данных.
РЕДАКТИРОВАТЬ:
Ну а пока я нашел решение:
Я преобразовал CIDR в обычный IP-адрес и сделать поиск, как:
SELECT `country_iso_code`, `country_name`
FROM `GeoIP`
WHERE inet_aton(network) <= inet_aton(:ipadress)
ORDER BY inet_aton(network) DESC
LIMIT 1
На моем сервере загрузка контента увеличивается примерно на 50-75 мс, но это только для небольшой части моего сайта.
(Настройка таблицы с уже примененным inet_aton не имеет большого значения)
Задача ещё не решена.
Других решений пока нет …