|
1
|
| Simone Margaritelli · 技术社区 · 15 年前 |
|
|
1
1
在内存引擎中使用mysql表。每隔一段时间将其转储到另一个永久表中,以便在服务器重新启动后保持IP的存储和持久性。 |
|
|
2
0
我倾向于认为文件_exists()的开销较小,因为没有远程连接,可以通过php缓存。但是如果你有大量的BAN,并且已经为应用的其他部分建立了DB连接,那么MySQL解决方案就开始变得更好,当然也更容易管理。也就是说,我不喜欢这两种方法,我建议通过防火墙/代理/负载均衡器将BAN移动到网络层。 或者,如果您没有大量的BAN,并且它们不经常更改,那么最好将列表直接存储为一个php数组,在代码中包含(),然后使用in_array()扫描BAN:
|
|
|
3
0
我更喜欢MySQL数据库。您可以在表中存储其他数据,如
在你的代码中你只做一个
假设您在IP列上有一个索引,那么应该非常快。如果有人打的是禁令,你就做一个
|
|
|
4
0
为什么一个接一个? 我将建立一个基于MySQL的BAN表,我可以轻松地扩展它。MySQL是一个快速的系统,并且更加灵活地记住未来。 但是,您也可以将结果自己缓存在一个文件中并从中读取。现在,任何熟悉MySQL的人都可以直接添加BAN,他们不需要知道您的特殊格式就可以直接使用它(在您的BAN系统扩展的情况下,使用它等等)。那么,这里的问题是文件权限。所以,您只需要添加一点额外的代码来弥补这一点。 如果他们需要更新缓存,给他们能力。 |
|
|
5
0
你没有说你在使用什么CMS,但是如果是开源的或者你自己的,为什么不修改它来使用.htaccess来禁止? |
|
6
0
我不认为这个问题与性能有关。
这就是为什么 问题应该是有动机的,而不仅仅是出于个人喜好。 |
|
|
7
-2
就你原来的问题而言,用
在旧的文件系统中,操作系统可以
不
做这样的假设,因为文件的长度是可变的。因此,它会扫描
一个更好的解决方案是让一个文本文件每行包含一个禁令。
那你就用
如果您愿意编写自己的数据库来保持BAN的数字列表(允许二进制搜索),那么还有更快的方法来实现这一点。 尽管正如一些人所说,这是 不 在您的服务器中会出现任何主要瓶颈。优化网站的“禁止检查”部分将使整个网站的速度提高0.01%。您真正需要小心优化的是运行100次的循环、对远程服务器的调用以及返回要分析的数据库多行的查询。
另外,不要编写函数来执行已经有内置PHP函数的操作。我花了一年时间手工分析字符串
|
|
|
Bard.Mus · 迁移后的数据库字符集环境 1 年前 |
|
Efannnnnn · 将Id数据存储到任何页面 1 年前 |
|
|
yooooo · 用于在块中删除的存储过程-LOOP未执行 1 年前 |
|
John Beasley · 更新一定数量记录的连续日期 1 年前 |
|
|
ColinM · MySQL以前的结果查询返回不正确的值 1 年前 |
|
Sergey_Z · MySQL只需无条件连接2个表和交叉连接 1 年前 |