php里如果二个人同时操一个数据库里表的字段,怎么避免
我做是一个抢任务的网站,如果1000个人去抢同一个任务,那就会有二个同时抢到,那这个任务到底给吧啊,...
我做是一个抢任务的网站,如果1000个人去抢同一个任务,那就会有二个同时抢到,那这个任务到底给吧啊,
展开
1个回答
展开全部
首先,你要知道,访问网站肯定存在先后,两个人同时访问网站,哪怕只有1ms的时间差也会被识别出先后的顺序。知道这个之后,对于避免数据库被多人修改就很简单了,有多种实现方法,一种是借鉴信号量的应用方法,在程序里来控制,谁抢到谁就拥有信号量,就可以操作数据库;另一种是使用数据库ACID特性以及lock功能(各种现代数据库都支持事务处理模式并拥有lock功能,具体查你用的数据库的文档教程),先访问的要在程序里对数据库加lock,防止其他人修改。
更多追问追答
追问
不对啊,以前请做出一个软件出来,也是抢任务的,就一个任务被同时两个人都抢到,以前那个被两个抢到没有事,现在做的网页,必须给一个人,那就有可能没有时间差啊,
追答
你现在在抢到任务时就输出时间(以毫秒为单位),就知道不可能有同时了,就算人为上是同时,程序处理上也有先后,你试一下就知道了。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询