php - 通过 php 或 apache 禁止用户 ip

标签 php mysql apache

我们的应用程序使用 MySQL 来存储每个被禁止的 IP。 当某些事件被触发时,IP 将被自动禁止,并在给定的持续时间内将它们添加到 bans 表中。该表是 MyISAM,但 IP 很少被禁止。

在玩家提出的每个请求中,我们都会验证他的 IP 是否在禁止 IP 列表中以及他的暂停是否有效。因此,有时这涉及影响应用程序响应时间的无用数据库请求。

我们想知道使用 APACHE 并将每个被禁止的 IP 写入文件是否不是更好的选择,而不是执行 SQL 查询来验证每个访问者的 IP 是否在横幅 IP 列表中。

大型应用程序如何处理成百上千个被禁止的 IP,且有许多活跃用户?他们使用数据库还是文件写入?

最佳答案

具有合适索引的数据库将比简单的基于文件的解决方案快得多。如果您的响应时间受到此查询的影响,则说明您的代码和/或数据库结构存在严重问题。如果您需要这方面的帮助,请在此处或最好在 codereview 上将您当前的代码发布到一个新问题中。 .

话虽如此,根据您想对这些被禁用户执行的操作,您可以查看 iptables这将完全阻止他们访问您的网络服务器,从而消除了查询的需要。有一些库为此提供了 PHP 接口(interface)。谷歌“PHP iptables”了解更多信息。

关于php - 通过 php 或 apache 禁止用户 ip,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29172774/

相关文章:

mysql - 在 MySQL 中使用索引的最大 IN 子句数

linux - mod_rewrite - 修复绝对路径

带有 bindParam 与 bindValue 的 PHP PDO?

php - 在嵌套的 foreach 循环中使用嵌套查询

php - MySQL,结合 DISTINCT 和 JOIN

php - 如何将php结果传递给谷歌地图

javascript - 将动态图像与 HTML5 WebGL 360 度全景查看器与 Codeigniter 中的 Three.js 集成

MySql 删除选择中的前导和尾随空格

java - 如何在 Apache httpclient 中使用指数退避策略?

python - 使用 mod_wsgi 部署 Flask 应用程序