PHP .data处理与MySQL查询速度

时间:2014-03-04 11:03:05

标签: php mysql apache .htaccess

为了监控垃圾箱和不必要的爬虫/机器人/刮刀,我设置了带有rel=nofollow链接和隐藏链接的蜜罐。现在我有近200个IP在一周内阻止。我不打算使用.htaccess,因为.htaccess文件后来变得非常大。

我将这些IP存储在MySQL中,并在任何页面加载之前查询它是否阻止了IP。现在这没关系,但随着行的增加会变慢。我发现人们将这些数据存储在.dat文件中,以避免命中数据库,也可能更快搜索。我之前从未使用.dat文件,但它似乎只是.txt文件!

我的问题是:

  • 将阻止的IP存储在.dat文件中并使用PHP处理它比将其存储在mysql并查询它更快?
  • 这两种方法中哪一种更加密集RAM?
  • 这样检查阻塞IP比阻止.htaccess文件中的IP更好(对于数千个IP),或者Apache可以轻松处理大htaccess个文件吗?

1 个答案:

答案 0 :(得分:1)

我假设'.dat'文件你是指使用fopen()/ file_get_copntents()/ file()等直接通过php访问的文件?

这是一种非常危险的方法。每个PHP实例都不知道其他PHP实例正在做什么,这意味着为了避免破坏文件的内容,您需要实现锁定 - 这将导致脚本速度变慢并使用更多内存。还存在死锁和超时的潜在风险。

鉴于该列表可能会继续增长,为了能够在没有太多开销的情况下阻止访问,需要对其进行主动修剪。使用DBMS提供了一种更有效地管理数据的方法。

如果是我,我会使用fail2ban - 但这取决于对服务器的root访问权限。