2010-09-11 60 views
2

我正在LAMP框架+ Codeigniter上开发一个相当简单的站点,并希望实现用户访问速率限制功能,以防止站点被单个用户的请求淹没。该网站的基本功能是获取代码输入并返回一些信息。在PHP中实现站点访问速率限制

我只是在计划阶段,我的第一个想法是有一个简单的数据库表,其中包含IP地址,上次访问时间戳和访问次数,但由于我的编码技巧植根于非基于Web的应用程序对于处理这个任务的最佳方式有任何想法 - 例如,我应该考虑会话ID而不是IP地址吗?

我没有找到太多的一些一般的网页搜索,所以任何指针或指导将是伟大的。

谢谢。

+0

请注意,这是不是你必须担心,直到你绝对huuuuge。但是,嘿,也许你是。 – Matchu 2010-09-11 21:48:22

+0

Huuge是一种可能性!真! – Linker3000 2010-09-11 21:53:02

回答

4

如果你确实需要这样做,那么在PHP甚至涉足之前,你可能会做得更好。您可能会考虑考虑配置路由器或负载平衡器来完成此操作,或者至少需要某种网络服务器模块。

在PHP中这样做很可能会造成很大的开销,以至于自毁。

+1

赞赏 - 所有这些将取决于网站的托管方式,但根据我对另一个响应的评论,限制主要是为了防止滥用查询过程来刮取数据库 – Linker3000 2010-09-11 22:04:27

+0

啊哈,这是一件很难做到的事情,除非你有非常大量的非常易变的数据。爬虫只会放慢速度,使用多个IP地址,并放弃会话cookie,这样他们就会在每个请求中获得一个新的session_id。 – timdev 2010-09-11 22:49:09