【发布时间】:2015-09-17 07:00:26
【问题描述】:
我有一个在网络服务器上运行的 PHP API 前端。这个特定的 PHP 程序是分发的,因此它应该尽可能地便携。
我要实现的功能是IP冷却期,这意味着同一个IP每秒最多只能请求API两次,这意味着至少有500ms的延迟。
我想到的方法是将 IP 与最新的请求时间戳一起存储在 MySQL 数据库中。我通过以下方式获得 IP:
if (getenv('REMOTE_ADDR'))
$ipaddress = getenv('REMOTE_ADDR');
但是有些服务器可能没有 MySQL 数据库,或者安装它的用户没有访问权限。另一个问题是数据库的清理。
是否有更便携的方式来临时存储 IP(记住 IPv6)?
和
如何自动清理超过 500 毫秒的 IP,同时尽可能减少对性能的影响?
另外:我对查看存储的 IP 没有兴趣,这只是延迟。
【问题讨论】:
-
看看here。它提供了一种非常方便的方式。
-
@Andrew 谢谢,这有助于创建我自己的基于文件的解决方案!
标签: php mysql ip-address