我正在寻找一种更好,更快捷的方式,以最快的速度在我的网络服务器上存储数据。
我的想法是将每个传入请求的IP地址记录到服务器上的任何网站,如果它在设定的时间内达到某个数字,那么用户将被重定向到他们需要输入代码以重新获得访问权限的页面
我创建了一个apache模块,就是这样做的。它试图在ramdisk上创建文件但是我经常遇到权限问题,因为在我的模块有机会运行之前还有另一个模块可以切换用户。
使用物理磁盘是一个太慢的选项。
所以我唯一的选择如下:
在每个网站的ramdrive上创建文件夹,以便可以单独记录IP地址。
以某种方式弄清楚如何让我的apache模块在所有其他模块之前执行其功能。
OR
如果我选择选项#2,那么我会继续在丛林中击败,因为我已经尝试过了。
如果我选择#1选项,那么我可能需要更多ram,因为预计会在ramdrive上的几个文件夹中存储大量重复的IP地址。
如果我选择选项#3,那么apache模块将不得不经常寻找分配的ram空间以便找到IP地址,并且寻找需要时间。
人们说内存访问比文件访问更快但我不确定通过malloc直接访问内存是否比将数据存储到ram驱动器更快。
我期望收集大量IP地址的原因是为了阻止脚本小子以非常高的速率不断访问我的服务器。
所以我要问的是,我应该存储数据的最佳方式是什么?为什么?
答案 0 :(得分:0)
您可以使用hashmap
而不是大量的内存。它会很快。
可能是每个网站的几个哈希图。或者使用像string_hash(website_name) + (int_hash(ip) << 32)
答案 1 :(得分:0)
如果问题与权限有关,为什么不在该级别解决?使用通用用户帐户或组。或者让RAM磁盘上的所有内容都可读/写。
如果您想在Apache级别解决它,您可能需要查看mod_security和mod_evasive。