【发布时间】:2014-09-11 17:20:25
【问题描述】:
我有一个使用 Symfony2 框架的 php 5.5 Web 应用程序,并希望将服务器负载保持在最低限度。我网站上的几个页面允许用户从数据库中检索对象列表,其中一组有几十万行,很快就会超过一百万。未注册用户可以使用此页面。
我想防止用户在一分钟内或类似的时间跨度内执行太多次查询,并且已经在其他网站上看到了这一点,包括用于 cmets 或投票的 stackoverflow。
这是如何实现的?我是否需要创建一个 cookie 并检查每个页面加载时的会话,以查看我想要限制的特定操作是否已被使用并阻止表单提交?有没有标准的方式在 php 中处理这个,或者专门针对 Symfony2?我已经搜索过这个并发现了一些类似的问题,但没有具体的答案。这适用于直接在我的网站上的用户,而不是使用 api。
How to throttle API requests using PHP
How do I throttle my site's API users?
编辑:
我知道 cookie 不是正确的方法,我会尝试使用缓存来实现一种机制。我正在使用 php 5.5 并读到 APC 在 5.5 中存在一些错误,因此 Zend OpCache 实际上与 APCu 一起首选。谁能展示使用 Zend OpCache / APCu 记录和跟踪用户请求的示例?
【问题讨论】:
-
Cookies 驻留在客户端。我需要做的就是禁用它们,然后我可以向你发送所有我想要的垃圾邮件(而且许多机器人不处理 cookie)
-
是的,我很担心这一点,需要更强大的解决方案
-
这个答案好的话你能认可吗?
-
感谢扩展答案。我会将其标记为正确,但仍需再等一天,以防其他人回复。
标签: php symfony session cookies throttling