首页 > 解决方案 > php中的IP API查找优化

问题描述

我正在尝试限制对 IP 地理定位 API 的请求数量,我想知道这是否能准确确定用户国家;

我的IP表

id |-----ip-----| 国家|

1 | 1.194.121.200 | 美国


如果我的数据库中有上述内容,我是否可以将相同的国家/地区用于前两个八位字节中具有相同整数的 IP (1.194.208.105) ,以避免另一个 API 请求?

标签: phpnetworkingnetwork-programmingipip-geolocation

解决方案


不可靠,不。

  1. IP 子网通过位掩码工作,位掩码仅偶尔与点分四字节对齐。
  2. IP 分配发生变化。
  3. 由于 IPv4 稀缺性块经常被分成越来越小的块,分配在网络规模和地理方面可能会发生巨大变化。

例如:几年前,Azure 遇到了问题,因为他们从 LACNIC [南美洲] 购买了一块 IP 用于他们位于美国的云中。这造成了各种各样的破坏,因为使用过时的 IP 注册/地理位置数据的人开始抱怨他们不希望他们的数据位于美国以外。

无论如何,将每个 IP 的结果缓存一段合理的时间,但是除非您的 API 提供商为您提供该数据,或者您想要构建自己的 IP 地理定位服务,否则您将无法通过 netblock 进行缓存。


推荐阅读