php - IP地址存储记录(DB替代)

标签 php mysql database ip

我需要为每个 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/

相关文章:

php - FOREACH sql 表条目从另一个表获取结果

php - "Notice: Undefined variable"、 "Notice: Undefined index"、 "Warning: Undefined array key"和 "Notice: Undefined offset"使用 PHP

php - 我的 PDO 声明不起作用

PHP 搜索不适用于 CASE 函数

mysql - 使用 "IN"和 "a number of ORs in same SQL query"是否等效?

java - Firebase 与 sqlite 一起

php - mysql多个唯一键与重复键引用

php - 将所有值加在一起 ​​SQL SELECT

php - 使用 jquery、ajax 和 php ajax() 检查本地服务器上的用户名未连接

mysql - 加入多个外键