我正在使用PHP和MySQL开发一个Web应用程序,因为我必须限制要在表中插入的记录数。
...
const MAX= 10
if(/*record count query*/ < $this::MAX) {
/*insert query*/
}
...
出于测试目的,我只是通过浏览器使用GET请求来触发此代码。
当我连续点击F5键(刷新)约5秒钟时,计数超过MAX。
但是当我一个接一个地走时,计数就达到了极限。
这表明当count query
同时执行时,我连续点击F5 insert query
。我不知道如何解决这个问题,一些指导会对我有所帮助。
答案 0 :(得分:1)
您必须LOCK
表,因此当您尝试获取当前计数时,没有其他进程写入数据库。否则,您始终面临另一个进程当前插入数据的风险。
出于性能原因,您可以使用另一个表作为计数器,您将在这些操作期间将其锁定。