并发PHP和MySQL请求

时间:2015-02-24 06:17:18

标签: php mysql

我正在使用PHP和MySQL开发一个Web应用程序,因为我必须限制要在表中插入的记录数。

...
const MAX= 10
if(/*record count query*/ < $this::MAX) {
 /*insert query*/
}
...

出于测试目的,我只是通过浏览器使用GET请求来触发此代码。

当我连续点击F5键(刷新)约5秒钟时,计数超过MAX。

但是当我一个接一个地走时,计数就达到了极限。

这表明当count query同时执行时,我连续点击F5 insert query。我不知道如何解决这个问题,一些指导会对我有所帮助。

1 个答案:

答案 0 :(得分:1)

您必须LOCK表,因此当您尝试获取当前计数时,没有其他进程写入数据库。否则,您始终面临另一个进程当前插入数据的风险。

出于性能原因,您可以使用另一个表作为计数器,您将在这些操作期间将其锁定。