当您单击给定链接时,它会加载一个进行存储过程调用的页面。如果存储过程调用花费的时间超过几秒钟,则人们会再次开始单击该链接。如果他们点击链接十几次,我可以看到在数据库上运行了十几个查询。最后一个查询是唯一一个向用户返回任何内容的查询,但是其他11个查询在使用资源时执行完成。
防止这种情况的最佳方法是什么?有没有办法在数据库级别停止它或这是一个接口问题?这是我如何与PHP建立数据库连接的结果吗?
答案 0 :(得分:7)
就个人而言,我会解决界面问题 - 用户多次点击的原因并不是用户错了,而是说你的网站没有就他们想要做的事情进行任何沟通。考虑将链接设置为禁用onclick,可能显示某种加载动画,然后在获得数据回调后重新启用链接。这样,UI始终反映了后端状态,也阻止了用户排队等待大量请求!
答案 1 :(得分:1)
一种解决方案可能是在查询期间禁用链接。您可以使用一些本地JavaScript来更新当前页面或切换到另一个根本没有链接的页面 - 这一切都取决于您的网站设计。
另一个替代方法是在代码中设置一个保护变量,以便它只在未设置时调用存储过程:
if (!callingProcedure)
{
callingProcedure = true;
call procedure
}
然后当程序将重置callingProcedure
返回到假。
拥有某种进度指示器也会有所帮助 - 向用户反馈该网站实际正在做的事情。
答案 2 :(得分:1)
在处理请求时使用类似jQuery BlockUI Plugin的内容来阻止页面。这样,您的用户就可以确定正在发生的事情并阻止他们再次点击。