我需要为每个 IP 地址的用户存储一条记录,以限制特定 IP 地址可以执行操作的速率。
我知道将 IP 存储在数据库中是可行的,但我担心在资源有限的小型 VPS 上,MySQL 进程会占用过多的处理能力。是否有另一种存储 IP 数据的方法?
我想到了一个类似这样的系统:
/ips/
/ips/127/
/ips/127/0
/ips/127/0/0
/ips/127/0/0/1.txt
示例代码:
$ip_parts = explode('.', $_SERVER['REMOTE_ADDR']);
$records = intval(file_get_contents('ips/' . implode('/', $ip_parts)));
if($records > 50) {
echo 'Error - credits used.';
} else {
// Do something
}
使用包含所需数据的 1.txt 文件。我会遇到文件或文件夹数量的问题导致此方法比数据库慢吗?
最佳答案
是什么让您认为构建自己的基于文件的数据库方案比由具有 20 年经验的软件工程师为此目的构建的软件更好?只需使用 MySQL 数据库——很少有不这样做更好的情况——除非你真的想保存文件。
关于php - IP地址存储记录(DB替代),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8714838/