【问题标题】:PHP .dat Processing vs MySQL Query SpeedPHP .data 处理与 MySQL 查询速度
【发布时间】:2014-03-04 11:03:05
【问题描述】:

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

我将这些 IP 存储在 MySQL 中,并在任何页面加载之前查询它以获取被阻止的 IP。这暂时可以,但随着行数的增加会变慢。我发现人们将此类数据存储在.dat 文件中,以避免访问数据库并可能加快搜索速度。我以前从未处理过.dat 文件,但它似乎只是.txt 文件!

我的问题是:

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

【问题讨论】:

  • 如果您存储在文本文件中,您必须打开它、阅读它并分析其内容。 sql 数据库针对这些类型的操作进行了优化。

标签: php mysql apache .htaccess


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 2019-01-11
    • 1970-01-01
    • 2021-02-22
    • 1970-01-01
    • 2011-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多