为了监控垃圾箱和不必要的爬虫/机器人/刮刀,我设置了带有rel=nofollow
链接和隐藏链接的蜜罐。现在我有近200个IP在一周内阻止。我不打算使用.htaccess,因为.htaccess文件后来变得非常大。
我将这些IP存储在MySQL中,并在任何页面加载之前查询它是否阻止了IP。现在这没关系,但随着行的增加会变慢。我发现人们将这些数据存储在.dat
文件中,以避免命中数据库,也可能更快搜索。我之前从未使用.dat
文件,但它似乎只是.txt文件!
我的问题是:
.dat
文件中并使用PHP处理它比将其存储在mysql
并查询它更快?.htaccess
文件中的IP更好(对于数千个IP),或者Apache可以轻松处理大htaccess
个文件吗?答案 0 :(得分:1)
我假设'.dat'文件你是指使用fopen()/ file_get_copntents()/ file()等直接通过php访问的文件?
这是一种非常危险的方法。每个PHP实例都不知道其他PHP实例正在做什么,这意味着为了避免破坏文件的内容,您需要实现锁定 - 这将导致脚本速度变慢并使用更多内存。还存在死锁和超时的潜在风险。
鉴于该列表可能会继续增长,为了能够在没有太多开销的情况下阻止访问,需要对其进行主动修剪。使用DBMS提供了一种更有效地管理数据的方法。
如果是我,我会使用fail2ban - 但这取决于对服务器的root访问权限。