限制数据库请求

时间:2011-07-09 06:12:00

标签: php javascript jquery mysql

网站上的用户可以点击按钮投票选出一张又一张图片。这通过jQuery向MySQL数据库发送一些请求。我不确定,但网站帐户可能最多允许10个连接。

在这种情况下,单个用户重复点击会导致多个请求,从而导致性能问题吗?如果是这样,有哪些简单的方法来限制请求?

编辑:重新提出的问题被标记为不清楚。

3 个答案:

答案 0 :(得分:1)

MySQL Setting Account Resource Limits

从MySQL 4.0.2开始,您可以限制对个人帐户的以下服务器资源的访问权限:

帐户每小时可以发出的查询数

帐户每小时可以发布的更新次数

帐户每小时可以连接到服务器的次数

其他信息 -

MySQL没有查询超时值,也没有任何其他内置方法来限制单个查询。但是,编写一个可以终止长时间运行查询的脚本非常简单。您甚至可以捕获用户和查询,以便以后可以击败有问题的用户/程序员。

Here是使用PERL的示例。

修改以解决附加信息

根据您的应用所提出的查询,即使只需点击一下即可放下整个网站。虽然投票可以以非常轻量级的方式实施,但即使您有1000个用户提供重复点击以使网站响应。

您还可以限制应用程序级别的数据库命中 - 例如,通过在会话变量中保存用户已经投票的照片的ID - 在点击数据库之前检查该变量,您应该没问题

答案 1 :(得分:1)

首先确保您的问题是数据库,也许您的网络服务器上有一些逻辑需要很长时间才能处理。

但是,要“限制”您的请求,您必须优化查询,使用索引,在服务器上缓存,或者重新设计数据库结构。

希望这会有所帮助。干杯

答案 2 :(得分:1)

如果没有理由让任何人每隔几秒钟点击一次按钮,只需为该按钮设置一个禁用功能。因此,当它被点击时,它会被禁用5秒钟,然后再次重新渲染。

你可能想要查找一个更好的计时器方法,这是我所知道的一种方式。

你可以使用 按钮onclick-

document.getElementById("button").disabled = true;
var enableButton = setInterval( "enableButton()", 5000 );

function enableButton()
{
document.getElementById("button").disabled = false;
clearInterval(enableButton)
}

祝你好运