我创建了一个允许客户更改背景颜色的页面。例如,提供了5种背景颜色供选择,并且制作了一些用于改变背景颜色的按钮。服务器将保存客户端在数据库中选择的背景颜色,以便他们在再次访问页面时可以看到他们选择的背景颜色而无需任何设置。当客户端单击该按钮时,AJAX请求将发送到服务器,PHP脚本将查询并更新数据库中的行以记录客户端的选择。
实际上,如果客户端不经常更改背景颜色,我已经完成了页面并且没有任何问题。例如,如果我点击在4秒内均匀地从红色变为蓝色变为绿色变为白色,则识别3个变化,最后识别出白色"将保存在数据库中。但是,如果我在一段时间内再次这样做,比如不到1秒,我发现有些更新失败了。详细信息,我会检查$stmt->affected_rows
是否返回0,例如,它可能会显示与"绿色"相对应的更新。和"白色"影响了行0。
如果某些更新失败,则可能无法保存客户端选择的最后一种背景颜色。此外,限制客户端更改背景的速度也很奇怪。因此,我想知道导致问题的原因。
是否达到最快的更新频率?或者,是因为上次更新仍在写入数据并锁定行? MySQL可以接收更新查询并将它们放入队列中,并按顺序处理它们吗?
答案 0 :(得分:0)
我觉得你的where子句包含了旧的颜色值。由于网络竞争条件,您无法保证您的AJAX请求将到达服务器的顺序。 PHP或MySQL中没有固有的限制UPDATE语句之间的时间。